指標與陣列名

2022-03-29 07:18:55 字數 1267 閱讀 7861

例一:

#include main()

;for (i=0;i<=9;i++)

}

例二:

#include main()

;for (i=0;i<=9;i++)

}

二:通過指標訪問陣列元素

#include main()

;int *pa;

pa=a;

for (i=0;i<=9;i++)

}

#include main()

;int *pa;

pa=a;

for (i=0;i<=9;i++)

}

看pa=a即陣列名賦值給指標,以及通過陣列名、指針對元素的訪問形式看,它們並沒有什麼區別,從這裡可以看出陣列名其實也就是指標。難道它們沒有任何區別?有,請繼續。

#include main()

;int *pa;

pa=a;

for (i=0;i<=9;i++)

}

修改一下,看pa和a是否等同

#include main()

;int *pa;

pa=a;

for (i=0;i<=9;i++)

}

原因分析:

可以看出,這段**也是將陣列各元素值輸出。不過,你把{}中的pa改成a試試。你會發現程式編譯出錯,不能成功。看來指標和陣列名還是不同的。其實上面的指標是指標變數,而陣列名只是乙個指標常量。這個**與上面的**不同的是,指標pa在整個迴圈中,其值是不斷遞增的,即指標值被修改了。陣列名是指標常量,其值是不能修改的,因此不能類似這樣操作:a++。前面4,5節中pa[i],*(pa+i)處,指標pa的值是使終沒有改變。所以變數指標pa與陣列名a可以互換。

四:申明指標常量

#include main()

;int * const pa=a; //

注意const的位置:不是const int * pa,

for (i=0;i<=9;i++)

}

這時候的**能成功編譯嗎?不能。因為pa指標被定義為常量指標了。這時與陣列名a已經沒有不同。這更說明了陣列名就是常量指標。但是…

int * const a=;//不行

int a=;//可以,所以初始化陣列時必定要這樣。

以上都是在c-free上實驗過的。

陣列名與指標

引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發,而身邊...

陣列名與指標

include using namespace std int main int b 2 10 陣列名本身就是指標,再加上 就變成了雙指標,這裡的雙指標的就是指二維陣列 int p int a 1 p指向a陣列的第6個元素 雖然不存在 cout p 1 cout b 1 cout b 0 retur...

陣列名與指標

在本科畢業前,一直以為陣列名就是指標,但是最近看了一些技術文章和與一些技術大佬的討論,我開始迷茫了,在心裡一直有疑問,在本科寫程式的時候一直就拿陣列名當指標用啊,沒什麼問題啊,但是後來想了想,有了點靈感,就寫下來,不知道自己琢磨的是否通透,歡迎交流學習。首先說明陣列名為什麼不是指標 上例子 incl...