有關陣列的運算(一)

2021-08-15 17:07:59 字數 3006 閱讀 1327

1.sizeof

sizeof是乙個單目運算子,計算資料型別或變數長度(即所佔位元組數)

int 整型型別佔4個位元組;char 字元型別佔1個位元組;位址佔四個位元組

2.strlen

strlen(位址),以』\0』為結束標誌計算字串長度的函式(不包括』\0』)

3.&+陣列名,陣列名表示整個陣列,這裡取出的是整個陣列的位址

sizeof(陣列名),陣列名表示整個陣列,計算的是整個陣列的大小,單位是位元組

除上述兩種情況之外,遇到的所有的陣列名都表示陣列首元素的位址

int main()

; printf("%d\n", sizeof(a));//16---a表示整個陣列,計算整個陣列大小(單位是位元組)

printf("%d\n", sizeof(a+0));//4---a+0表示首元素的位址

printf("%d\n", sizeof(*a));//4---a表示首元素位址,*解引用即首元素

printf("%d\n", sizeof(a+1));//4---a+1表示第二個元素位址

printf("%d\n", sizeof(a[1]));//4---a[1]表示第二個元素

printf("%d\n", sizeof(&a));//4---&a表示陣列的位址,但是位址的長度是4

printf("%d\n", sizeof(*&a));//16---&a表示陣列的位址,*解引用表示整個陣列大小

printf("%d\n", sizeof(&a+1));//4---&a表示陣列的位址加1,跳過整個陣列的位址

printf("%d\n", sizeof(&a[0]));//4---首元素的位址

printf("%d\n", sizeof(&a[0] + 1));//4---首元素的位址加+1,即第二個元素的位址

system("pause");

return

0;}

int main()

; printf("%d\n", sizeof(arr));//6---arr表示整個陣列大小

printf("%d\n", sizeof(arr + 0));//4---arr+0表示首元素位址

printf("%d\n", sizeof(*arr)); //1---*arr表示首元素

printf("%d\n", sizeof(arr[1]));//1---arr[1]表示第二個元素

printf("%d\n", sizeof(&arr));//4---&arr表示陣列的位址

printf("%d\n", sizeof(&arr + 1));//4---&arr表示陣列的位址加1,跳過整個陣列的位址

printf("%d\n", sizeof(&arr[0] + 1));//4---&arr[0]首元素的位址加+1,即第二個元素的位址

system("pause");

return

0;}

int main()

; printf("arr==%d\n", strlen(arr));//隨機值--- arr表示首元素位址,但陣列arr中沒有'\0'結束標誌,當strlen()函式從'a'數到'f'的時候會一直往後數

printf("arr+0==%d\n", strlen(arr + 0));//隨機值---表示首元素位址

//printf("%d\n", strlen(*arr));//錯誤**---*arr表示首元素,但strlen函式的引數是位址

//printf("%d\n", strlen(arr[1]));//錯誤**

printf("&arr==%d\n", strlen(&arr));//隨機值---表示陣列的位址,但在值上和首元素位址一樣

printf("&arr+1==%d\n", strlen(&arr + 1));//隨機值---&arr表示陣列的位址加1,跳過整個陣列的位址(其值與strlen(arr)差6)

printf("&arr[0]+1==%d\n", strlen(&arr[0] + 1));//隨機值---&arr[0]首元素的位址加+1,即第二個元素的位址(其值與strlen(arr)差1)

printf("%d\n", sizeof(a));//48---a表示整個陣列的大小

printf("%d\n", sizeof(a[0][0]));//4---第一行第乙個元素(整型)

printf("%d\n", sizeof(a[0]));//16---a[0]為第一行陣列名,即第一行陣列的大小

printf("%d\n", sizeof(a[0] + 1));//4---a[0]+1中a[0]表示第一行第乙個元素的位址,加1即表示第一行第二個元素的位址

printf("%d\n", sizeof(a + 1));//4---a+1中a表示第一行元素的位址,加1即表示第二行的位址

printf("%d\n", sizeof(&a[0] + 1));//4---&a[0]表示第一行元素的位址加1,即第二行元素的位址

printf("%d\n", sizeof(*a));//16---*a中a第一行元素的位址,*解引用即第一行元素的大小

printf("%d\n", sizeof(a[3]));//16---a[3]為陣列名,即第幾行陣列的大小(雖然a[3]越界,但是sizeof中不計算)

system("pause");

return

0;}

有關陣列的運算

一維陣列 int a printf n a 陣列首元素的位址 printf n a 1 陣列第二個元素的位址 首元素位址 4 printf n a 陣列的位址 printf n a 1 陣列的位址 1,跳過整個陣列 printf n sizeof a 16 整個陣列的位元組數 printf n si...

時間有關的陣列

var header 00 00 00 30 01 00 01 30 02 00 02 30 03 00 03 30 04 00 04 30 05 00 05 30 06 00 06 30 07 00 07 30 08 00 08 30 09 00 09 30 10 00 10 30 11 00 1...

有關多維陣列

一 多維陣列初始化 和一維陣列一樣,多維陣列的初始化也可以分為靜態初始化 整體賦值 和動態初始化兩種,其語法格式如下。1 靜態初始化 以二維陣列的靜態初始化為例,來說明多維陣列靜態初始化的語法格式。示例 如下 在二維陣列靜態初始化時,也必須和陣列的宣告寫在一起。數值書寫時,使用兩個大括號巢狀實現,在...