1樓:匿名使用者
兩者意思一樣,但是編譯器處理起來不見得一樣。就像樓上的例子a[2]跟*(a+2)是乙個意思。但是對於編譯器來說a[2]是一種固定的寫法,因此對於位址偏移什麼的有固定的處理方式,而*(a+2)在語法上應當分解為先算a+2再取值,如果編譯器不優化,完全按照這種定義去編譯的話,那麼就會有先算出a+2這個位址這一步,因此效率要低些。
至於編譯優化能不能使兩者一致,那就很難說了。
比如我編了這樣乙個程式
int a[100];
int b;
int i,j,k;
for(i=0;i<1000000;i++)}}和把b=a[0]換成b=*(a)所耗時間一樣。而分別換成b=a[k]和b=*(a+k)後者所耗時間明顯增加很多,前者也有所增加,但比較少。編譯器優化不能用這個語句測試,因為整個會被優化掉。
2樓:匿名使用者
只有語法有區別
本質沒有區別,本質c是把陣列當作指標來用的。
比如說下面的定義:
int a[3];
2[a]=10;
這樣是合法的。
2[a] = 10被翻譯成*(2+a)=10; 等價*(a+2)=10;等價於a[2]=10;
不過別這麼寫。over
3樓:匿名使用者
胡海濤 21棟強勢圍觀,不要以為我們不知道是你問的,我要告訴c語言老師!你慘了。
4樓:匿名使用者
21棟109前來圍觀
5樓:低調地淡定
無論指標指向的內容有多大,指標都只有4個位元組。從內容上來看,訪問指標佔用空間小。
另外,陣列名本身就可以當做是乙個位址,所以指標訪問與下標訪問,並無多大區別。
6樓:曾哥鐵血史泰龍
21棟110圍觀樓主杯具..
c語言中的陣列和指標的區別
7樓:
c語言中,陣列的名稱等價於陣列的首位址,
當然可以利用指標開闢動態空間,使用方式與
陣列在形式上相同的,
但是他們有乙個本質的區別,陣列名相當於乙個位址常數,而指標是乙個以位址為內容的變數。
指標與陣列的關係可以參考下面的網頁:
8樓:匿名使用者
指標可分為:指標常量,指標變數
。指標常量是指在程式執行過程中變數值不能改變的變數(例如:char* const p = "abc";)。
指正變數是指在程式執行過程中變數值可以改變的變數(int * p;p++;)。
陣列:陣列是裝載的容器,陣列名代表陣列首位址(例如:int a[20],則a代表的是a[0]的位址),陣列名是乙個指標常量,在執行過程中不能改變其值(如上:
a的值是&a[0],若有a=&a[2]:則報錯)。
他們的區別:陣列名是乙個指標常量,而指標可分為:指標常量和指標變數。
我想你應該明白了。
9樓:匿名使用者
陣列名是陣列的第乙個元素的位址,其意義相當於乙個指標,比如
int a[10],*p;
p=a; //把陣列的首位址賦給了p
p=&a[0]; //p的初值為a[0]的位址與上面的語句等價可以通過指標引用陣列元素
陣列本來就有兩種表示方法
一種是下標法如a[i];
一種是指標法如*(a+i)或*(p+i)這兩種表示方法都與a[i]等價
10樓:匿名使用者
陣列是存放資料的一段空間,陣列中可以存放字元和數字。指標相當於乙個位址,它是指向某個單元的位址。。陣列名相當於指標。。
11樓:匿名使用者
定義char a[100], *b = a;
1、陣列和指標都表示位址,在某些情況下,陣列和指標是可以相互使用的,如訪問某個元素,a[2], *(a + 2), b[2], *(b +2)
2、不同的是,陣列初始化時就有給定值的空間,識別符號不能更改,如a = 0,這是錯誤的。而指標如果不初始化,值是隨機的,需要給指標分配空間才能訪問。
12樓:匿名使用者
簡單明瞭的說:
陣列是裝載的容器,
指標是指向這些容器的位址的。
那為什麼有時候可以用指標來代替陣列呢?
那是因為當指標指向了該陣列的位址的時候,它就可以實現這個功能!
c語言中,陣列元素的下標下限為,c語言中陣列元素下標的上下限是什麼?
c語言中,陣列元素的下標下限為0。陣列中的各元素的儲存是有先後順序的,它們在記憶體中按照這個先後順序連續存放在一起。陣列元素用整個陣列的名字和它自己在陣列中的順序位置來表示。例如,a 0 表示名字為a的陣列中的第乙個元素,a 1 代表陣列a的第二個元素,以此類推。對於vb的陣列,表示陣列元素時應注意...
c中,陣列名跟指標有區別嗎,C語言中陣列名和指標的區別
其實可以認為陣列名就是乙個不可更改的常量指標。但是 嚴格來說,二者有一定區別,比如sizeof a a為陣列名的時候,算出來是a這個陣列所佔位元組數,但是如果a是指標,不管指向什麼,結果都是乙個int的位元組數 取決於特定機器 因而,有人認為陣列名是乙個可以退化為常量指標的型別,這種退化在陣列名作為...
c語言中定義指向字元的指標陣列chars5則
void sort char s 這裡接收到的是抄指襲針陣列,即 陣列中各元素 是指標位址,s是陣列首位址 s i 表示第i 1個元素 的值 位址,乙個字串的首位址,s i 表示這個字串的第乙個元素,是個字元 s i是第i 1個元素的位址,s i 是位址中的資料,等同於s i c語言中char是什麼...