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语言中数组和指针的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: seo模拟点击软件_网站用软件刷排名好不
- 下一篇: 沈抚新区机器人产业园怎么_“智慧物流智能