指標和陣列名及字串的區別

2021-07-30 09:08:59 字數 654 閱讀 6642

學習嵌入式技術有一段時間了,對於c語言容易混淆不清楚的地方自己做了一下總結:

指標和陣列名:

這裡不談原理和概念:自己總了他們在用法上的不同和相同:

例子: int  a[10]; int * b;

不同:1、sizeof()不同

sizeof(a)為整個陣列的記憶體,sizeof(b)為指標的記憶體一般是4位元組;

2、&a  和 b的指標運算不同

理解為   int * a[10]和int (*a)[10]的區別

相同:1、角標運算相同

如果b=&a[0]    那麼a[5]的值完全和b[5]相同

2、作為形參形同

function(int * num)中function(a)和function(b)一樣

字串和陣列

1、字串被編譯器處理為指向char 的指標

char *a;        a="qewre";相當一次複製  「qwere」相當於乙個指向char的指標

2、char str ="***x",特殊!是陣列初始化的簡略形式;

3、char *a="***" 和char b=;不一樣的地方在於  系統會給a自動加上結束符而b沒有結束符,如果需要劃定界限自己新增結束符。

簡答來體現:strlen(a)和strlen(b)不一樣;

指標和陣列名的區別

c c 應該是大學裡最先接觸的程式語言,它們的重要性不言而喻。但是我始終抱著 陣列名就是指標 的錯誤信條到現在,可能是因為大學老師錯誤的講解使我一直保留著這種誤解。指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用,所以也難免在學習中將兩者混淆。這裡介紹下指標...

指標 陣列 陣列名和陣列名取位址的區別

首先指標陣列 和陣列指標叫法本身是種誤導 指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointerto an array,即指向陣列的指標 其次他們本質乙個是陣列,乙個是指標 int a 4 表示是乙個陣列 陣列a中的元素都為int型指...

指標和陣列名

想要清楚的知道指標和陣列的本質區別還有處理方式,感覺繞不開看編譯器是如何處理的了,有時間可以上知乎搜搜有什麼編譯類的書籍,或者找個懂編譯的大神,在網上看到有一篇從編譯器角度剖析陣列名的,有所幫助,雖然沒有說到足夠深入讓我理解指標和陣列真正的本質是什麼 本文只是稍微說明一下自己的猜測和理解,可能存在有...