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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

c语言memset清空指向数组的指针_C语言中数组和指针的关系

發布時間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言memset清空指向数组的指针_C语言中数组和指针的关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組的數組名其實可以看作一個指針。看下例:

1.??? int?array[10]={0,1,2,3,4,5,6,7,8,9},value;?

2.??? value=array[0];?//也可寫成:value=*array;?

3.??? value=array[3];?//也可寫成:value=*(array+3);?

4.??? value=array[4];?//也可寫成:value=*(array+4);

上例中,一般而言數組名array 代表數組本身,類型是int[10],但如果把array 看做指針的話,它指向數組的第0 個單元,類型是int* 所指向的類型是數組單元的類型即int。因此*array 等于0 就一點也不奇怪了。同理,array+3 是一個指向數組第3 個單元的指針,所以*(array+3)等于3。其它依此類推。

1.??? char?*str[3]={?

2.??? ????"Hello,thisisasample!",?

3.??? ????"Hi,goodmorning.",?

4.??? ????"Helloworld"?

5.??? };?

6.??? char?s[80];?

7.??? strcpy(s,str[0]);?//也可寫成strcpy(s,*str);?

8.??? strcpy(s,str[1]);?//也可寫成strcpy(s,*(str+1));?

9.??? strcpy(s,str[2]);?//也可寫成strcpy(s,*(str+2));

上例中,str 是一個三單元的數組,該數組的每個單元都是一個指針,這些指針各指向一個字符串。把指針數組名str 當作一個指針的話,它指向數組的第0 號單元,它的類型是char **,它指向的類型是char *。
*str 也是一個指針,它的類型是char *,它所指向的類型是char,它指向的地址是字符串"Hello,thisisasample!"的第一個字符的地址,即'H'的地址。注意:字符串相當于是一個數組,在內存中以數組的形式儲存,只不過字符串是一個數組常量,內容不可改變,且只能是右值.如果看成指針的話,他即是常量指針,也是指針常量.
str+1 也是一個指針,它指向數組的第1 號單元,它的類型是char**,它指向的類型是char*。
*(str+1)也是一個指針,它的類型是char*,它所指向的類型是char,它指向"Hi,goodmorning."的第一個字符'H'

下面總結一下數組的數組名(數組中儲存的也是數組)的問題:聲明了一個數組TYPE array[n],則數組名稱array 就有了兩重含義:第一,它代表整個數組,它的類型是TYPE[n];第二,它是一個常量指針,該指針的類型是TYPE*,該指針指向的類型是TYPE,也就是數組單元的類型,該指針指向的內存區就是數組第0 號單元,該指針自己占有單獨的內存區,注意它和數組第0 號單元占據的內存區是不同的。該指針的值是不能修改的,即類似array++的表達式是錯誤的。在不同的表達式中數組名array 可以扮演不同的角色。在表達式sizeof(array)中,數組名array 代表數組本身,故這時sizeof 函數測出的是整個數組的大小。在表達式*array 中,array 扮演的是指針,因此這個表達式的結果就是數組第0 號單元的值。sizeof(*array)測出的是數組單元的大小。表達式array+n(其中n=0,1,2,.....)中,array 扮演的是指針,故array+n 的結果是一個指針,它的類型是TYPE *,它指向的類型是TYPE,它指向數組第n號單元。故sizeof(array+n)測出的是指針類型的大小。在32 位程序中結果是

1.??? int?array[10];?

2.??? int?(*ptr)[10];?

3.??? ptr=&array;

上例中ptr 是一個指針,它的類型是int(*)[10],他指向的類型是int[10] ,我們用整個數組的首地址來初始化它。在語句ptr=&array中,array 代表數組本身。本節中提到了函數sizeof(),那么我來問一問,sizeof(指針名稱)測出的究竟是指針自身類型的大小呢還是指針所指向的類型的大小?答案是前者。例如:
int(*ptr)[10];則在32 位程序中,有:
sizeof(int(*)[10])==4
sizeof(int[10])==40
sizeof(ptr)==4實際上,sizeof(對象)測出的都是對象自身的類型的大小,而不是別的什么類型的大小。

總結

以上是生活随笔為你收集整理的c语言memset清空指向数组的指针_C语言中数组和指针的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

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