?
篇接上文(),今天我們來(lái)講一些有趣的關(guān)于指針的問題??????
首先我們來(lái)看個(gè)代碼:
int main()
{
//一維數(shù)組
int a[] = { 1,2,3,4 };//4個(gè)元素,每個(gè)元素使int類型(4個(gè)字節(jié))
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a + 0));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a + 1));
printf("%d\n", sizeof(a[1]));
printf("%d\n", sizeof(&a));
printf("%d\n", sizeof(*&a));
printf("%d\n", sizeof(&a + 1));
printf("%d\n", sizeof(&a[0]));
printf("%d\n", sizeof(&a[0] + 1));
return 0;
}
我們知道sizeof函數(shù)是計(jì)算數(shù)組的大小的,所以我們這的輸出值都是什么呢???????
首先我們要明白:
?1、
2、
3、
4、?
5、?
6、?
7、
8、?
9、
10、
?
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-795532.html
我們可以看到運(yùn)行結(jié)果和我們分析的是一致的,所以對(duì)于數(shù)組名的引用,還是有很多坑的。
接下來(lái)我們換字符串?dāng)?shù)組以及strlen函數(shù)的例子:?
#include <string.h>
int main()
{
//字符數(shù)組
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr + 0));
//printf("%d\n", strlen(*arr));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr + 1));
printf("%d\n", strlen(&arr[0] + 1));
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr + 0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr + 1));
printf("%d\n", sizeof(&arr[0] + 1));
return 0;
}
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-795532.html
先介紹一下strlen函數(shù):?
strlen 求字符串長(zhǎng)度
統(tǒng)計(jì)的是在字符串中\(zhòng)0之前出現(xiàn)的字符的個(gè)數(shù)
?
?
是不是很奇妙,接下來(lái)我們?cè)賮?lái)看最后一個(gè)例子:
int main()
{
char* p = "abcdef";
printf("%d\n", strlen(p));
printf("%d\n", strlen(p + 1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p + 1));
printf("%d\n", strlen(&p[0] + 1));
return 0;
}
這次我們得主角是一個(gè)指針P,它所指向的是一個(gè)字符串,那么又會(huì)發(fā)生怎樣奇妙的火花呢?
?
相信大家經(jīng)過這次的學(xué)習(xí)一定可以對(duì)指針又不一樣的理解??????????
?
?
?
到了這里,關(guān)于C語(yǔ)言天花板——指針(進(jìn)階3)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!