Ⅰ c語言中指針和數組是怎樣相互轉換的
指針數組,就是一個數組里存放的都是指針,比如*p[8];p[0]里存放的就是一個指針數據
數組指針,數組名就是一個指向數組起始地址的指針,數組下標是縈引,比如num[0],他就相當於num+0;
num這個指針沒移動,於是取的是數組的第一個。num[1]相當於數組指針移1,於是指向數組第二個
Ⅱ C語言中,指針和數組的區別和聯系
區別:C語言把內存劃分成四個區,它把一般的變數和數組等存在於內存中的棧區,所以數組在C語言的定義中只是一組同類型的普通變數,即使這個變數有可能是指針。所以他的作用比指針小的很多,而指針可以指向任何區的任何數據,所以就會覺得指針和數組名很像,但是必須要注意的是,數組名只是指針中的一種,它是指針中只指向棧區的且指針的移動范圍是有限的,即數組長度。而且數組在定義之初就已經有了自己的內存,一般的指針如果未指向某一個內存塊時,它是沒有自己的內存的,即所謂的野指針。
聯系:如上面所說,數組只是定義在棧區的一個連續變數,它的首地址就是一個指針。
總結:不僅數組有指針,所有變數都有指針,指針說白了就是內存中的地址,就像一個房間必須有一個房間號。在C/C++語言中定義一個指針,就是在棧區開辟一個內存空間用來存放它指向的內存地址,然後給指針賦值,就是把地址值賦值給剛才開辟的內存空間,然後通過訪問該內存中的地址值來間接訪問該地址下存放的數據。如果該地址值指向的是一塊靜態存儲區,如字元串常量等,當然就不可以修改指向的內容啦。
經驗之談,樓樓加分啊
Ⅲ c語言中數組和指針的區別與聯系
數組是用指針方式實現的,但數組值是一個常量,即不能改變數組的首地址,而指針是一個變數,可以改變它的值;如:數組 a和指針p,p=a+1;是合法的,但a=a+1;是不合法的。
Ⅳ C語言中數組名和指針的區別
數組在當作參數傳遞時,可以當作指針;當然,參數傳遞相當於賦值操作,所以用指針來接受數組的值也是可以的。
除此之外,指針就是指針,數組就是數組,一點也不一樣,例如
1,數組名不能作為左值,即不能被賦值,也不能進行++ --操作
2,sizeof 數組名 和 sizeof 指針 不同
Ⅳ C語言:簡述一下「數組和指針的關系」
一、概念
數組:數組是用於儲存多個相同類型數據的集合。
指針:指針相當於一個變數,但是它和不同變數不一樣,它存放的是其它變數在內存中的地址。
數組:數組在內存中是連續存放的,開辟一塊連續的內存空間。數組是根據數組的下進行訪問的,多維數組在內存中是按照一維數組存儲的,只是在邏輯上是多維的。
指針:指針很靈活,它可以指向任意類型的數據。指針的類型說明了它所指向地址空間的內存。
數組:
指針:
數組:
- (1)char a[]={"Hello"};//按字元串初始化,大小為6.(2)char b[]={'H','e','l','l'};//按字元初始化(錯誤,輸出時將會亂碼,沒有結束符)(3)char c[]={'H','e','l','l','o','
二、賦值、存儲方式、求sizeof、初始化等
1.賦值
同類型指針變數可以相互賦值,數組不行,只能一個一個元素的賦值或拷貝
2.存儲方式
數組的存儲空間,不是在靜態區就是在棧上。
指針:由於指針本身就是一個變數,再加上它所存放的也是變數,所以指針的存儲空間不能確定。
3.求sizeof
數組所佔存儲空間的內存:sizeof(數組名)
數組的大小:sizeof(數組名)/sizeof(數據類型)
在32位平台下,無論指針的類型是什麼,sizeof(指針名)都是4,在64位平台下,無論指針的類型是什麼,sizeof(指針名)都是8。
關於指針和數組求sizeof,我在之前的博客中寫過,現將連接貼上:
https://blog.csdn.net/cherrydreamsover/article/details/81589838
4.初始化