C語言深度剖析指標

2021-09-23 20:29:29 字數 2071 閱讀 1900

1.指標是什麼?

在電腦科學中,指標是程式語言中的乙個物件,利用位址,它的值直接指向存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為『指標』。意思是通過它能找到以它為位址的記憶體單元。

記憶體 :

最小記憶體單元----bit

1byte=8bit

1kb=1024byte

1mb=1024kb

1gb=1024mb

總結:指標就是變數,用來存放位址的變數(存放在指標中的值都被當成位址處理)。

2.指標和指標型別

指標定義方式為" type+* "

int num = 10;

int* p = # //p是指標變數,p裡存放的是num的位址

同理

char*    pc = null;

int* pi = null;

short* ps = null;

long* pf = null;

double* pd = null;

**總結:**指標的型別決定了指標向前或者向後走一步有多大(距離)

3.指標的運算

1).指標±整數

#define n_values 5

float values[n_values];

float *vp;

for (vp = &values[0]; vp < &values[n_values];)

2).指標-指標

得到的是元素個數(絕對值)

比較於日期–例如,日期-日期為相差多少天

4.指標和陣列

int arr[10] = ;

printf("%p\n", arr);//首元素位址

printf("%p\n", arr+1);//第二個元素位址

printf("%p\n", &arr[0]);//首元素位址

printf("%p\n", &arr);//陣列位址,且陣列位址和首元素位址是一樣的

總結:陣列名表示的是首元素位址,除了兩個例外:sizeof(arr)//arr表示整個陣列

printf("%p\n",&arr)//arr表示整個陣列。

5.字元指標

char ch = 'w';

char* pc = &ch;

char* pstr = "hello";//將首字元的位址放到pstr裡,且*pstr不可被改,「 」是常量字串

printf("%s\n", pstr);

6.指標陣列

int* arr1[5];

char* arr2[5];

arr1表示乙個陣列,有五個元素,每個元素是乙個整型指標。

arr2表示乙個字元陣列,每個元素都是乙個字元指標。

7.陣列指標

int(*p)[10];
p先和*結合,說明p是乙個指標變數,然後指標指向的是乙個大小為10 個整型的陣列。

所以p是乙個指標,指向乙個陣列,叫陣列指標。即p裡存放的是陣列的位址。

8.函式指標

void test()

int main()

pfun可以存放add的位址。pfun先和*結合,說明pfun是指標,指標指向的是乙個函式,指向的函式引數為 int int,返回型別為int.

int add(int a, int b)

int main()

int main()

C語言指標深度剖析

1.下標法,用a i 來訪問陣列元素 2.指標法,ptr i 形式間接訪問 3.陣列名,用 a i 形式訪問陣列 4.指標下標法,ptr i 形式訪問陣列元素 1.直接訪問法 printf d a i j 2.指標訪問法 int ptr ptr a 0 for i 0 i 3 i for j 0j ...

深度剖析C語言的各種指標

該文章詳解了c語言中指標的概念與用法,對初學者了解c語言中指標這一重要概念有很大的幫助,其中變數的定義與使用一節尤為有價值。要點如下 1.指標是個變數,本質代表了乙個位址。2.變數拆解遵循由近到遠,從左到右的原則。3.c語言中,變數怎麼使用就怎麼定義 指的是書寫格式上保持一致 在c語言中,指標就是乙...

C語言深度剖析

c語言深度剖析 1,編譯器通常不為普通const唯讀變數分配儲存空間,而是將他們儲存在符號表中,使得它成為乙個編譯期間的值,沒有了儲存與讀記憶體的操作,使得它的效率更高。2,const int p p可變,p指向的物件不變。int const p p可變,p指向的物件不可變 int const p ...