首先,先看這樣一段程式:
#include
int main()
;printf("%p\n", arr);
printf("%d\n", *arr);
return
0;}
執行的結果:
這裡,printf(「%p\n」, arr),指的是列印陣列arr的首元素arr[0]的位址,為00d5f14;printf(「%d\n」, *arr),指的是列印指向陣列arr的首元素arr[0]的內容。
通過以上,下面說一下有關陣列的一些運算:
//整型一維陣列
#include
int main()
; printf("%d\n",sizeof(a));
//16 sizeof(陣列名)指的是乙個int整型所佔記憶體大小。
printf("%d\n",sizeof(a+0));
//4 sizeof(陣列名+偏移量)指數組的首元素a[0]偏移0位後的記憶體大小
printf("%d\n",sizeof(*a));
//4 sizeof(指標+陣列名)指數組首元素的位址的大小
printf("%d\n",sizeof(a+1));
//4 sizeof(指標+陣列名+偏移量)指數組a[1]的位址的大小
printf("%d\n",sizeof(a[1]));
//4 sizeof(陣列)指數組中某一元素所佔記憶體大小
printf("%d\n",sizeof(&a));
//4 sizeof(&陣列名)指數組首元素a[0]位址的大小,僅僅int型位址
printf("%d\n",sizeof(&a+1));
//4 sizeof(&陣列名+偏移量)指數組最後元素加偏移量,即陣列之外的位址的大小,
printf("%d\n",sizeof(&a[0]));
//4 sizeof(&陣列)指數組某個元素的位址的大小
printf("%d\n",sizeof(&a[0]+1));
//4 sizeof(&陣列+偏移量)指數組某個元素的位址加偏移量的大小
return
0;}
//#include
//int main()
//;//
printf("%p\n", arr);
//printf("%d\n", *arr);//這裡輸出什麼?
// return
0;//}
////整型一維陣列
//#include
//int main()
//;//
printf("%d\n",sizeof(a)); //
16 sizeof(陣列名)指的是乙個int整型所佔記憶體大小。
// printf("%d\n",sizeof(a+0)); //
4 sizeof(陣列名+偏移量)指數組的首元素a[0]偏移0位後的記憶體大小
// printf("%d\n",sizeof(*a)); //
4 sizeof(指標+陣列名)指數組首元素的大小
// printf("%d\n",sizeof(a+1)); //
4 sizeof(指標+陣列名+偏移量)指數組a[1]的位址的大小
// printf("%d\n",sizeof(a[1])); //
4 sizeof(陣列)指數組中某一元素所佔記憶體大小
// printf("%d\n",sizeof(&a)); //
4 sizeof(&陣列名)指數組首元素a[0]位址的大小,僅僅int型位址
// printf("%d\n",sizeof(&a+1)); //
4 sizeof(&陣列名+偏移量)指數組最後元素加偏移量,即陣列之外的位址的大小,
// printf("%d\n",sizeof(&a[0])); //
4 sizeof(&陣列)指數組某個元素的位址的大小
// printf("%d\n",sizeof(&a[0]+1));//
4 sizeof(&陣列+偏移量)指數組某個元素的位址加偏移量的大小
// return
0;//}
//char字元陣列
#include
#include
int main()
; printf("%d\n", sizeof(arr)); //
6 char型陣列的大小6個元素
printf("%d\n", sizeof(arr+0)); //
4 指數組的首元素a[0]偏移0位後的記憶體大小
printf("%d\n", sizeof(*arr)); //
1 指向乙個char型首元素arr[0]大小
printf("%d\n", sizeof(arr[1])); //
1 陣列arr[1]所佔記憶體的大小
printf("%d\n", sizeof(&arr)); //
4 陣列arr位址的大小
printf("%d\n", sizeof(&arr+1)); //
4 陣列arr之外的位址的大小
printf("%d\n", sizeof(&arr[0]+1));//
4 陣列首元素arr[0]的位址加1的大小
printf("%d\n", strlen(arr)); //x 在strlen語句,要在陣列找到\0才停下來,隨機值
printf("%d\n", strlen(arr+0)); //x 在strlen語句,要在陣列找到\0才停下來,隨機值
printf("%d\n", strlen(*arr)); //error arr[0]='a',ascii碼97,strlen(97)
printf("%d\n", strlen(arr[1])); //error arr[1]='b',ascii碼98,strlen(98)
printf("%d\n", strlen(&arr)); //x arr[0],要在陣列找到\0才停下來,隨機值
printf("%d\n", strlen(&arr+1)); //x 陣列外,要在陣列找到\0才停下來,隨機值
printf("%d\n", strlen(&arr[0]+1)); //x arr[0]位址加1 ,要在陣列找到\0才停下來,隨機值
return
0;}
字串 字串陣列 字元陣列的區別
string a newstring 字串 string a newstring 5 字串陣列 char a newchar 5 字元陣列 string a newstring abc 字串 string a newstring 字串陣列的賦值 string a 字串陣列的初始化 char a ne...
字串 字元陣列 字串陣列 字元陣列的相互轉換
1 字串 字元陣列的相互轉換 string strstringtype my string 建立乙個字串 charchrchararray 建立乙個字元陣列 chrchararray strstringtype.tochararray 將字串轉換為字元陣列 strstringtype string....
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...