c語言數組和指針的區別
『壹』 c語言中,指針和數組的區別和聯系
指針就是一個裝地址的變數,數組是內存中的一個區域,而數組名是這個區域的首地址。也就是說你在定義指針的時候編譯器只分配了一個變數的空間(空間大小由內存地址長度決定),而定義數組的時候編譯器分配了一段區域的空間(空間大小由[
]裡面的數字和數組的類型決定)。使用上你可以把一個地址賦值給指針,但是不能賦值給數組名。你可以直接給數組裡面的變數賦值,這是安全的,因為內存已經申請好了,而給指針裡面裝個那個地址賦值就要小心了,因為指針裡面那個地址很可能會出錯。
『貳』 C語言中:數組指針與指針數組有什麼區別
數組指針是指向這個數組首地址的指針,指向對象是這個數組;
指針數組是存放一類指針的數組,這個數組的每個元素都是一個指針;
例子:
int
a[10];
int*
s;
s
=
a;//這里s就是一個數組指針,它的值就是數組a
的首地址;當然,如果a是一個整數,那s就是一個指向整型的指針;
int
a;
int*
s[5];
for(int
i=0;i<5;i++)s[i]=a;
//這里s就是一個指針數組,它的每個元素都是整型變數a的地址
『叄』 c語言中的數組和指針的區別
C語言中,數組的名稱等價於數組的首地址,
當然可以利用指針開辟動態空間,使用方式與數組在形式上相同的,
但是他們有一個本質的區別,數組名相當於一個地址常數,而指針是一個以地址為內容的變數。
指針與數組的關系可以參考下面的網頁:
http://..com/question/341950481.html
『肆』 C語言中數組名和指針的區別
數組名本質上就是個指針,也就是地址,但是它是一個常指針,是個固定值,而指針是是指針變數的簡稱,是個變數,這個變數存放的是地址值,它的值是可以改變的。例如:
int*p;
inta,b;
p=&a;//把變數a的地址賦值給指針p,那麼指針p就指向了變數a的內存單元
p=&b;//把變數b的地址賦值給指針p,那麼指針p就指向了變數b的內存單元
inta[10];//整型數組,數組名a本質上是一個地址,是首元素地址,它是一個固定值,不能對它進行賦值操作。
『伍』 C語言中一維數組和指針有什麼區別
指針都沒初始化,運行個毛啊。
應該這樣:
『陸』 C語言數組名和指針的區別
數組和指針的區別:
數組名確實表示指向數組首地址的指針,但這個指針很特別,它的值(指針的值指的是指針所指的地址)不能被改寫,能改寫的僅僅是其指向的內容,換句話說,數組名只能指向數組的首地址,如果有數組char a[];那麼如果出現a = a+1;這是編譯都通不過的錯誤。而對於一個普通的指針是可以的,再比如有數組char a[];那麼再定義一個char *p = a;然後再用p = p+1是合法的,這表示讓指針p指向&a[1]。
它們的第二個區別是:每當用到數組名這個指針的時候,系統都會傳入數組的信息,而普通的指針只是一個4位元組的整數,例如:
chara[5];
char*p=a;//指針a和指針p都指向數組a的首地址
cout<<sizeof(a)<<"##"<<sizeof(p)<<endl;
這時的運行結果是「5##4」
『柒』 c語言中數組名和指針變數的區別
數組和指針的區別:
數組名確實表示指向數組首地址的指針,但這個指針很特別,它的值(指針的值指的是指針所指的地址)不能被改寫,能改寫的僅僅是其指向的內容,換句話說,數組名只能指向數組的首地址,如果有數組char
a[];那麼如果出現a
=
a+1;這是編譯都通不過的錯誤。而對於一個普通的指針是可以的,再比如有數組char
a[];那麼再定義一個char
*p
=
a;然後再用p
=
p+1是合法的,這表示讓指針p指向&a[1]。
它們的第二個區別是:每當用到數組名這個指針的時候,系統都會傳入數組的信息,而普通的指針只是一個4位元組的整數,例如:
char a[5];
char *p = a;//指針a和指針p都指向數組a的首地址
cout << sizeof (a) << "##" << sizeof (p) << endl;這時的運行結果是「5##4」
『捌』 C語言關於指針和數組的區別
如果硬要說的話,把數組作為參數傳遞的時候,會退化為指針
數組是開辟一塊連續的內存空間,數組本身的標示符代表整個數組,可以用sizeof取得真實的大小;指針則是只分配一個指針大小的內存,並可把它的值指向某個有效的內存空間
然而個人感覺啊,指針和數組都是分配空間,數組是死的,容易浪費內存或者造成溢出,而指針就方便很多~而且也可以節省更多的空間,更具有效率一些~
『玖』 c語言中數組和指針的區別與聯系
數組是用指針方式實現的,但數組值是一個常量,即不能改變數組的首地址,而指針是一個變數,可以改變它的值;如:數組 a和指針p,p=a+1;是合法的,但a=a+1;是不合法的。
『拾』 c語言 字元指針和字元數組的區別
首先第一點,非常重要的一點:指針和數組是不同的兩個類型!
我們從可以從C語言標准文檔中得知:
ISO/IEC 9899:1999 - programing language c
6.2.5 Types
20 .
說明了什麼是指針類型。
在了解了兩種類型的基礎上,我們了解數組和指針的區別:
數組是一組相同類型對象的集合,指針是對一個對象的引用。
它們在使用中表現出了一定的相同點,但不同點也是很多的:
1,數組直接儲存對象,指針則是指向一個對象。
2,數組名不能被賦值,指針變數能。
3,sizeof一個數組,得到數組的長度(位元組單位),sizeof一個指針,相當於sizeof(void*)。(注意,不同目標平台指針長度可能不同,所以sizeof(void*)是最准確的回答)
4,(可能是考試內容,對於正確性就呵呵)指針是間接訪問,數組是直接訪問。
如果你對C語言有深入學習的想法,務必去了解一下C語言的ISO標准。