當前位置:首頁 » 編程語言 » c語言數組和指針的區別

c語言數組和指針的區別

發布時間: 2022-09-03 19:52:34

『壹』 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標准。

熱點內容
思科模擬器ftp配置 發布:2025-01-15 18:01:53 瀏覽:196
wd軟體如何修改密碼 發布:2025-01-15 17:59:57 瀏覽:715
公共代理伺服器地址 發布:2025-01-15 17:59:53 瀏覽:817
android文件圖片 發布:2025-01-15 17:39:44 瀏覽:205
linux的路徑怎麼寫 發布:2025-01-15 17:18:49 瀏覽:185
php解壓程序 發布:2025-01-15 17:06:22 瀏覽:142
刷助力腳本 發布:2025-01-15 17:02:31 瀏覽:520
c盤里的用戶文件夾可以刪除 發布:2025-01-15 16:56:45 瀏覽:951
虛幻4編譯到哪裡 發布:2025-01-15 16:50:19 瀏覽:756
透明度漸變android 發布:2025-01-15 16:45:08 瀏覽:835