日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组相关运算

發布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组相关运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數組的初始化
數組及指針在內存中的存儲

一維數組在內存中的存儲

有關數組的運算
//一維數組 int a[] = {1,2,3,4}; printf("%d\n",sizeof(a));//16這里的a表示的是整個數組,計算出的是整個數組的大小,單位為byte printf("%d\n",sizeof(a + 0));/*a沒有單獨放在sizeof括號后面,此時的a表示的是數組a的首地址,加零還是地址計算出是4*/ printf("%d\n",sizeof(*a));//a代表的是數組首地址,*a解引用為a[0],計算出是4 printf("%d\n",sizeof(a + 1));//數組指向第二個元素 printf("%d\n",sizeof(a[1]));//a[1]代表2 printf("%d\n",sizeof(&a));//數組的地址,地址的大小為4byte printf("%d\n",sizeof(&a + 1));//指向4的后面,加1還是地址,大小為4byte printf("%d\n",sizeof(&a[0]));//&a[0]為a[0]的地址,4 printf("%d\n",sizeof(&a[0] + 1));//指向a[1],a[1]地址是4 char arr[] = {'a','b','c','d','e','f'}; printf("%d\n",sizeof(arr));//6,數組名代表整個數組,計算出為整個數組的大小 printf("%d\n",sizeof(arr + 0));//4數組名代表首地址,首地址加1是第二個數組的地址,大小是4 printf("%d\n",sizeof(*arr));/*1數組名未單獨放在sizeof后面,此時的arr代表數組首地址,*a解引用后為a[0]*/ printf("%d\n",sizeof(arr[1]));//arr[1]是字符b,字符b的類型為char,大小為1 printf("%d\n",sizeof(&arr));//&arr代表整個數組的地址,數組的地址還是地址,大小為4 printf("*d\n",sizeof(&arr + 1));//&arr + 1指向數組的后面,大小還是4 printf("%d\n",sizeof(&arr[0] + 1));//&arr[0]取出的是arr[0]的地址,加1則變成arr[1]的地址大小是4 printf("%d\n",strlen(arr));/*arr代表數組首元素的地址,從數組的第一個元素往后數直到遇到'\0'停止,可是在f后面數組到底存放了什么我們都不知道,所以是隨機值*/ printf("%d\n",strlen(arr + 0));//和上面的情況相同,隨機值,并且這個隨機值和上面的值相等 printf("%d\n",strlen(*arr));/* *arr是字符a,而strlen將'a'的ASCII碼當做了地址,但這個地址不允許被訪問,所以出錯,程序掛掉了*/ printf("%d\n",strlen(arr[1]));//和上面的解釋相同,程序崩潰 printf("%d\n",strlen(&arr));//&arr代表數組的地址,指向第一個元素,因為往后找不到'\0',輸出隨機值 printf("%d\n",strlen(&arr + 1));/* &arr代表整個數組的地址加1后跳過整個數組,還是找不到'\0',輸出隨機值,但是比上一個小6*/ printf("%d\n",str(&arr[0] + 1));//指向第二個數組元素,輸出還是隨機值,但輸出的值比strlen(&arr)小1 //二維數組 int a[3][4] = {0}; printf("%d\n",sizeof(a));/*數組名單獨放在sizeof()中,此時數組名代表整個數組,計算出的是整個數組的大小單位是byte,數組總共有3 * 4 = 12個元素,一個元素是4個字節,則計算出為48個字節 printf("%d\n",sizeof(a[0][0]));//a[0][0]是整形,整形的大小是4個字節 printf("%d\n",sizeof(a[0]));//a[0]是二維數組首元素名,單獨放在sizeof后面,計算出的是數組首元素的地址,大小是二維數組第一行元素的大小,16 printf("%d\n",sizeof(a[0] + 1);//表示數組a[0][1]的大小,4 printf("%d\n",sizeof(&a[0] + 1));//指向a[1][0],代表第二行的地址,大小是4 printf("%d\n",sizeof(*a));//此處a代表數組首元素的地址,解引用是第一行16 printf("%d\n",sizeof(a[3]));//sizeof后面的表達式不參與運算,16
二維數組的存儲結構

總結

以上是生活随笔為你收集整理的数组相关运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。