指標與地址

#include int main() { int i; int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; char b[10] = {‘c’, ‘l’, ‘a’, ‘g’, ‘u’, ‘a’, ‘g’, ‘e’, ‘w’, ‘r’}; for (i = 0; i < 10; i++) { printf(“addr:0x%x, Value:%d\n”, &a[i], a[i]);//printf第一個字元必須要有,字串必須是雙引號,第一個字元格式化和後面的輸出個數對應 } printf(“\n”); for (i = 0; i < 10; i++) { printf(“addr:0x%x, Value:%c\n”, &b[i], b[i]); } return 0;}

指標與地址

mac CLion輸出

地址就是邏輯記憶體上的編號,而指標雖然也表示一個編號,也是一個地址。但兩者性質卻不相同。一個代表了常量,另一個則是變數。

就好比記憶體是一把尺子,而指標就是尺子上面的遊標,可以左右移動,他某一個時刻是指向一個地方的,這就是指標變數。

int main() { int num = 2021; int *p = # printf(“num Address = 0x%x,num=%d\n”, &num, num); printf(“p = 0x%x,*p=%d\n”, p, *p);//p是指標,*p是指標指向地址中的值 printf(“%d\n”, *&num);}

指標與地址

mac CLion輸出

#include struct INFO { int a; char b; double c;};int main() { int *p; char *p1; float *p2; double *p3; struct INFO *p4; //struct INFO型別為結構體型別 我們將會在後面的章節中講解 void *p5; printf(“int point size is :%d\n”, sizeof(p));//sizeof是一個運算子(operator),其作用是返回一個物件或型別所佔的記憶體位元組數。 printf(“char point size is :%d\n”, sizeof(p1)); printf(“float point size is :%d\n”, sizeof(p2)); printf(“double point size is :%d\n”, sizeof(p3)); printf(“struct point size is :%d\n”, sizeof(p4)); printf(“void point size is :%d\n”, sizeof(p5)); return 0;}

指標與地址

mac CLion輸出

#includeint main(){ int i; int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=a; for(i=0;i<10;i++) { printf(“P Value:%d a Value :%d\n”,*(p++),*(a+i)); } printf(“\n”); return 0;}

指標與地址

mac CLion輸出

#includeint main(){ char *str = “www”; //char string[]=“Welcome to dotcpp。com”; str[0]=‘C’; //錯誤的,試圖修改str指向的常量區的字串內容,字串常量不能被修改 printf(“%c\n”, str); return 0;}