C語言指標1

2021-08-04 17:27:34 字數 3519 閱讀 7140

陣列與指標

陣列的名字是第一元素的位址。

#include 

int main();

printf("str[0] 的位址是:%p\n", &str[0]);

}

輸出:

str[0] 的位址是:000000000062fdc0

陣列相鄰每一元素之間相差值 = 資料型別的寬度

#include 

int main();

float b[3] = ;

double c[3] = ;

printf("a[0] -> %p a[1] -> %p a[2] -> %p\n", &a[0],&a[1],&a[2]);

printf("b[0] -> %p b[1] -> %p b[2] -> %p\n", &b[0],&b[1],&b[2]);

printf("c[0] -> %p c[1] -> %p c[2] -> %p\n", &c[0],&c[1],&c[2]);

}

輸出:

a[0]

-> 000000000062fe40

a[1]

-> 000000000062fe44

a[2]

-> 000000000062fe48

b[0]

-> 000000000062fe30

b[1]

-> 000000000062fe34

b[2]

-> 000000000062fe38

c[0]

-> 000000000062fe10

c[1]

-> 000000000062fe18

c[2]

-> 000000000062fe20

指向陣列的指標:

#include 

int main();

int*p = &a[0];

printf("*p = %d

*(p+1) = %d

*(p+2) = %d ",*p, *(p+1), *(p+2));

}

輸出:

*p =1 *(p+1) = 2 *(p+2) = 3

#include 

#include

//strlen函式的實現

int main()

printf("strlen(str) = %d, count = %d",strlen(str),count);

}

輸出:

strlen(str) = 13, count = 13

指標陣列和陣列指標:

指標陣列

定義格式 :int *p[5];

//陣列每一元素都是整形的指標,存放的位址

陣列指標

定義格式 :int (*p)[5];

//指向陣列位址的指標

#include 

int main();

int (*p)[5] = &tmp;

for(int i = 0; i < 5; i++)

}

輸出:23

456

指標與二維陣列

array[i][j];//二維陣列

*(array+i)表示 &array[i][0] == array[i]

*(*(array+i)+j) 表示array[i][j]

#include 

int main(), };

int (*p)[3] = array;

//其實array是指向三個元素的陣列指標

printf("**(p+1) = %d\n", **(p+1));

printf("**(array+1) = %d\n", **(array+1));

printf("array[1][0] = %d\n", array[1][0]);

printf("*(*(p+1)+2) = %d\n", *(*(p+1)+2));

printf("*(*(array+1)+2) = %d\n",*(*(array+1)+2));

printf("array[1][2] = %d\n", array[1][2]);

}

輸出:

**(p+1) = 4

**(array+1) = 4

array[1][0] = 4

*(*(p+1)+2) = 6

*(*(array+1)+2) = 6

array[1][2] = 6

void指標

定義:void *p

可以指向任一資料型別的指標

一般不對void指標解引用。可以先轉化型別 再解引用

demo:

a = 123;

int*pi = &a;

void *pv = pi;

printf("%d", *((int

*)pv);

指向指標的指標

#include 

// int main()

輸出:

num=520

*p:520

*pp:520

&p:000000000022fe38,&pp:000000000022fe38

&num:000000000022fe44,p:000000000022fe44,*pp:000000000022fe44

//陣列指標與二維陣列

#include

int main();

int *p=array;

int i;

for(i=0;i<10;i++)

*/int array[3][4]=,,};

//int

**p=array;

int (*p)[4]=array;//

4列 int i,j;

for(i=0;i<3;i++)

printf("\n");

}// printf("p:%p,array:%p\n",p,array);

//printf("p+1:%p,array+1:%p\n",p+1,array+1);

return

0;}

輸出:

0 1 2 3

4 5 6 7

8 9 10 11

C語言 指標1

指標恐怕是c語言中最不容易掌握的乙個概念了,但指標又是如此的重要,可以說不會指標,c語言就等於沒學。指標到底是乙個什麼東西呢?include int main char pch null char pstr hello pointer short pshort null int pint null ...

C語言指標1

1 取位址符 2 雙目運算子 例如a b 按位於 指標 位址 int p 定義整型指標變數 double p1 定義浮點型指標變數 int a 10 整型變數存放整型值 double b 23.3 浮點型變數存放浮點數 int p a 整型指標變數存放整型位址 指標 p 為間接訪問符,也稱為解引用 ...

C語言指標1

計算機中所有的資料都必須放在記憶體中,不同型別的資料占用的位元組數不一樣,例如 int 占用4個位元組,char 占用1個位元組。為了正確地訪問這些資料,必須為每個位元組都編上號碼,就像門牌號 身份證號一樣,每個位元組的編號是唯一的,根據編號可以準確地找到某個位元組。先看這樣一段 定義乙個整型變數a...