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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言数组的一些运算*a,a+1,a+1,a+0

發布時間:2025/6/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言数组的一些运算*a,a+1,a+1,a+0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一維數組

? 數組名代表整個數組的時候只有兩種情況,sizeof(數組名),這里的數組名表示整個數組。&數組名,這里的數組名表示整個數組。
?

#include<stdio.h>int main() {int a[]={1,2,3,4};printf("%d\n",sizeof(a));?? //16 a表示數組的首元素,首地址因此用sizeof計算它們的值,就是整個二維數組所占用的內存空間printf("%d\n",sizeof(a+0));?? ?? //4 a+0為a[0]的首地址printf("%d\n",sizeof(*a));? //4? 首元素大小 就相當于 sizeof(*a)=4 =sizeof(a[0]);printf("%d\n",sizeof(a+1));? //4 從首元素向后偏移一個整型的地址,即第二個元素的地址printf("%d\n",sizeof(a[1]));?? //4 a[1]的字節數為4printf("%d\n",sizeof(&a));??? //4? &a為數組地址和a即a[0]的地址一樣printf("%d\n",sizeof(&a+1));? //4 跳過整個數組 指向數組后面的一個地址printf("%d\n",sizeof(&a[0]));?? //4 首元素地址printf("%d\n",sizeof(&a[0]+1));return 0;}

sizeof(a)表示整個數組大小,*a=*(a+0);*a表示數組的首地址,因此sizeof(*a)=4*sizeof(int)為16

總結為一句話,不論是一維數組,還是二維數組,如果直接sizeof數組名,那么大小為整個數組所占用的內存空間,如果計算類似a+0,a+1等數組名進行了偏移運算,那么它就代表指向某個元素的指針

字符數組

#include<stdio.h>int main() {char arr[]={'a','b','c','d','e','f'};printf("%d\n",sizeof(arr));? //6 整個數組大小printf("%d\n",sizeof(arr+0));? //4首元素地址大小printf("%d\n",sizeof(*arr));?? //1首元素大小printf("%d\n",sizeof(arr[1]));? //1第二個元素大小printf("%d\n",sizeof(&arr));? //4數組的地址printf("%d\n",sizeof(&arr+1));//4數組后的地址printf("%d\n",sizeof(&arr[0]+1));//4第二個元素的地址return 0;}

#include<stdio.h>int main() {char *p="abcdef";printf("%d\n",sizeof(p));//4 a的地址printf("%d\n",sizeof(p+1));//4 b的地址printf("%d\n",sizeof(*p ));//1 解引用指向一個字符大小printf("%d\n",sizeof(p[0]));//1 首地址大小printf("%d\n",sizeof(&p ));//4 p的地址printf("%d\n",sizeof(&p+1));//4 p之后的地址printf("%d\n",sizeof(&p[0]+1));//4 指向b的地址 return 0; }

二維數組

#include<stdio.h>int main() {int a[3][4]={0};printf("%d\n",sizeof(a));?? //48 a表示數組的首元素,首地址因此用sizeof計算它們的值,就是整個二維數組所占用的內存空間printf("%d\n",sizeof(a[0][0]));?? ?? //4 a+0為a[0][0]的首地址printf("%d\n",sizeof(a[0]));? //16? 第一行元素printf("%d\n",sizeof(a[0]+1));? //4 第一行的第二個元素地址printf("%d\n",sizeof(a+1));?? //4 第二行地址printf("%d\n",sizeof(&a[0]+1));??? //4? 第二行地址printf("%d\n",sizeof(*a));? //16 第一行printf("%d\n",sizeof(a[3]));?? //16 第四行return 0;}

?

總結

以上是生活随笔為你收集整理的C语言数组的一些运算*a,a+1,a+1,a+0的全部內容,希望文章能夠幫你解決所遇到的問題。

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