陣列與指標
陣列的名字是第一元素的位址。
#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...