-
首先我想解釋一下:陣列名稱是乙個指標,它指向儲存陣列元素的一段記憶體,那麼陣列元素是如何引用的,我給大家舉個例子。 例如,a[3],編譯系統將首先找到陣列的第乙個位址,即a,然後根據中的值確定位址偏移量,即3,從而確定要引用的元素是位址a+3所指向的單元的內容。
你知道它叫什麼嗎? 它不僅僅是乙個“方括號”,在 C 語言中被稱為“部分位址運算子”,它讓你了解它的作用。 在 c 中,它可以過載。
理解了以上一點之後,那麼指標變數 p 和陣列名稱 a 具有相同的屬性,即它們都是指標。
1)P+1,A+2,P++,P=P+1,P-A當然都是合法的。因為它們是同一型別數量之間的運算。 只是這個量與一般儲存的資料量不同,它儲存的是位址。
2) a++, a=a+1, a=a-1 是非法的,因為一旦為陣列分配了記憶體空間,它的第乙個位址就被確定,這相當於乙個常量,這個常量怎麼能改變呢?
在這裡,你可能會有點困惑。 但我只想說,“對變數(或常量)的引用與更改變數(或常量)不同”,你可以弄清楚。
例如,p-a、a-2等只是參考a的值進行計算,但a本身的值不變,而a++,即a=a+1,是硬著頭皮想改a,你看,是這樣嗎? 也許你用另一種方式寫它看起來更直觀,例如:k=p-a 和 a=a-1
3)至於他們的意思,我之前已經說過了。既然 p,a 是指標並儲存位址,那麼對它們的操作當然是更改位址的操作,例如,p+1 指向位址為 p+1 的儲存單元,。。
對於A++,A=A-1這些非法傢伙來說,不用說,就是在試圖改變有用的資料單位,這是絕對不能容忍的,我們需要的是穩定性。。。呵呵。
-
int a[10], a 是靜態記憶體中的常數。 有乙個固定的位置。
++ 對他來說,依此類推,相當於 對於常量 int a = 100;a++;
是非法的。 p 是乙個指向 a 的指標,他自己的值可能在堆疊中或記憶體中,但 p=a;
例如,0x88660 到 P
就是給他A的位址,他所說的p+1,a+2,p++,p=p+1,p-a是什麼意思? 實際操作是位址的a。 相當於0x88660+4,0x88660+8....
-
p+i 是向後移動 1 的指標。
例如,*p=a[0],則 *(p+i)=a[i]a+2 a[10] 中的 a[10] 表示陣列 a[10] 的第乙個位址,則 a+2 是 a[0+2]=a[2]。
p++ 與 p=p+1 相同,這意味著更改指標以使其指向下乙個指標。
p-a 表示幾個元素的差異。
A 是陣列的第乙個位址,但請記住,它不是指標,因此對他的操作毫無意義。
-
指標陣列和陣列指標之間的主要區別如下:
1. 陣列的名稱不能更改,但指向陣列的指標可以更改。 字串指標指向的字串中的字元不能更改,而字元陣列中的字元可以更改。 在查詢陣列的長度時,可以通過借用陣列的名稱來獲取陣列的長度,但不能通過借用指標來獲取陣列的長度。
2.陣列名稱的指標不能更改,但可以更改陣列的指標。 因為陣列名稱的點是不能改的,所以使用autoincrement運算子自動增量會改變它的點,這是不對的,陣列名只能指向陣列的開頭。
3.指標陣列是乙個陣列,陣列的元素都是指標,陣列占用的位元組數由陣列本身決定。 陣列指標是指向陣列的指標。 在 32 位系統中,它始終是 4 個位元組,它指向的陣列是多少個位元組。
4.字串指標指向的字串中的字元不能更改,而字元陣列中的字元可以更改。 指標陣列本身就是乙個陣列,但其中儲存的資料型別不是int,也不是char這樣的基本型別,而是乙個指標型別,說白了就是位址。
-
指標陣列:表示乙個陣列,陣列中的每個變數都是乙個指標變數。 陣列指標:表示指標型別變數,此指標變數指向陣列。
-
它們之間的區別在於,指標陣列表示指標變數陣列,這意味著其中的所有元素都是指標變數,而陣列指標表示它是指向陣列的指標。
那麼指標變數儲存的位址必須是陣列的第乙個位址,並且必須是指向某一行的位址,如陣列中的a[3][4]、a+2等,不能是指向某列的特定位址,如&a{2][1]、a[2][1]等。
指標陣列:指標陣列可以說是指標的陣列,這個變數就是乙個陣列。 其次,指標修飾陣列,這意味著陣列的所有元素都是指標型別,在 32 位系統中,指標占用四個位元組。
陣列指標:陣列指標可以說是指向陣列的指標。 此變數是乙個指標。 指標由多次定義,這意味著指標包含陣列的第乙個位址,或者指標指向陣列的第乙個位址。
基於上面的解釋,你可以理解指標陣列和陣列指標之間的區別,因為它們基本上是變數的型別。
-
陣列指標 指向陣列的指標是指向陣列的型別指標; 指標陣列 指標陣列是元素是指標的陣列。
-
這是乙個文字遊戲,指標陣列的含義是有好幾組指標,它強調的是陣列的概念,而陣列指標強調最後兩個詞,即指標。
-
指標陣列是指標序列,而陣列指標是指向陣列的指標。 兩者的型別不同,可以看看C語言或者C++書,哪個比較詳細。
-
陣列指標只是乙個指標變數,似乎在 C 中專門用於指向二維陣列,它占用了指標在記憶體中的儲存空間。 指標陣列是多個指標變數,它們以陣列的形式存在於記憶體中,占用多個指標的儲存空間。
還應該注意的是,當用於同時指向二維陣列時,引用與具有陣列名稱的引用相同。
-
對於指標陣列,首先,它是乙個陣列,我們知道陣列的元素是:指標,換句話說,陣列儲存乙個指標。 此外,陣列本身占用多少位元組由陣列本身決定;
就陣列指標而言,第乙個是指標,陣列指標指向乙個陣列,也就是說,它是指向陣列的指標,唯一可以確定的是它在32位系統下佔據了4個位元組,但是在陣列中指向多少位元組是無法確定的, 這取決於具體情況。
-
組只是在堆疊中定義的乙個連續變數,它的第乙個位址是乙個指標。
不僅陣列有指標,而且所有變數都有指標,指標是記憶體中的位址,就像房間必須有房間號一樣。
在 C C++ 語言中定義指標是在堆疊中開啟乙個記憶體空間來儲存它指向的記憶體位址,然後給指標賦值,即將位址值賦值給剛剛開啟的記憶體空間,然後通過訪問記憶體中的位址值間接訪問該位址下儲存的資料。
如果位址值指向靜態儲存區域,例如字串常量,當然不能修改該點的內容。
-
1.指標:系統為變數開啟乙個單元格,指標指向該單元格的變數值。
陣列和指標之間的唯一區別是不能更改陣列名稱指向的位址。
int a[10];
int *p,n;
p = a;
有幾種方法可以獲取第乙個元素的值:
n =a[0];
n = *p;
n = p[0];
n = *(p+0) ;
但是,以下宣告是非法的:
readings = totals;非法! 讀數總數 = dptr 無法更改; 非法! 總計無法更改
陣列名稱是乙個指標常量。 除了它們所代表的陣列之外,不能使它們指向任何其他內容。
-
區別:C將記憶體劃分為四個區域,並將通用變數和陣列放在記憶體的堆疊區域,因此陣列在C的定義中只是一組同型別的普通變數,即使這個變數可能是乙個指標。 所以它的作用比指標要小得多,乙個指標可以指向任何區域的任何資料,所以會感覺指標和陣列名很像,但必須注意的是,陣列名只是其中乙個指標,它是乙個只指向堆疊的指標,指標可以在有限的範圍內移動, 即陣列的長度。
而且,陣列在定義之初就已經有了自己的記憶體,如果乙個通用指標沒有指向某個記憶體塊,它就沒有自己的記憶體,也就是所謂的百搭指標。
總結:不僅陣列有指標,所有變數都有指標,指標說白了就是記憶體中的位址,就像房間必須有房間號一樣。 在 C C++ 語言中定義指標是在堆疊中開啟乙個記憶體空間來儲存它指向的記憶體位址,然後給指標賦值,即將位址值賦值給剛剛開啟的記憶體空間,然後通過訪問記憶體中的位址值間接訪問該位址下儲存的資料。
如果位址值指向靜態儲存區域,例如字串常量,則當然不能更改該點的內容。
說到體驗,建築是乙個加分項。
-
功能是一樣的,但本質實際上是乙個自定義位址。
區別在於指標只定義乙個位址。 陣列是一組自定義位址,陣列變數表示起始位址。
-
1. 陣列是在記憶體中連續的一段資料。
2. 指標是指向記憶體空間的變數。
int a[10];
int *p,n;
p = a;
有幾種方法可以獲取第乙個元素的值:
n =a[0];
n = *p;
n = p[0];
n = *(p+0) ;
3.區別在於陣列是編譯器分配的空間,變數名不能再賦值; 另一方面,指標可以重複賦值(除非定義為 const)。
例如:p = a; 沒錯。
a = p;錯誤。
-
指標可以指向陣列,陣列可以是指標陣列。
-
陣列的元素可以通過指標進行操作以更改其內部值。
-
右。 陣列指標是指向陣列位址的指標,陣列位址本質上是乙個指標; 指標陣列是乙個陣列,其中陣列的元素是乙個指標(例如 int *p[4],它定義了三個指標:p[0]、p[1]、p[2] 和 p[3],它本質上是乙個陣列。 在某些情況下,陣列指標的使用類似於指標陣列,請務必注意其中的區別。
p 是乙個指標變數,它指向包含 4 個 int 元素的一維陣列,其中 p 在它指向的一維陣列的長度中遞增。
p+i) 是一維陣列 a[i][0] 的位址;*(p+2)+3 表示 a[2][3] 位址(第一行為 0 行,第一列為 0 列),*p+2)+3) 是 a[2][3] 的值。
-
在 C 語言中,陣列指標和指標陣列是兩個不同的概念。
陣列指標是一種指向陣列的指標。 例如,如果有乙個陣列 int a[10],則 int* p 是指向陣列 a 的陣列指標。
指標陣列是乙個陣列,其中陣列的元素是指標。 例如,如果有乙個指標陣列 int* p[10],則 p[0] 是乙個指標,p[1] 是另乙個指標,依此類推。
在 C 中,陣列指標和指標陣列的使用方式也不同。 陣列指標可用於訪問陣列中的元素,例如 *p 是陣列 a 中的第乙個元素; 指標陣列可用於訪問指標陣列中的指標,例如 p[0] 是指標陣列 p 中的第乙個指標。
陣列和指標之間的區別:
陣列名稱確實表示指向陣列第乙個位址的指標,但是這個指標很特殊,它的值(指標的值是指標指向的位址)不能被覆蓋,只能覆蓋它指向的內容,換句話說,陣列名稱只能指向陣列的第乙個位址, 如果有陣列 char a;那麼如果 a = a+1; 這是乙個甚至無法編譯的錯誤。 對於普通指標,例如,可能有乙個陣列 char a; 然後定義乙個字元 *p = a; 然後使用 p = p+1 是有效的,這意味著指標 p 指向 &a[1]。 >>>More
你學過C語言嗎?
首先:和ch有什麼關係,str是乙個指標,ch,是乙個陣列的第乙個位址,雖然這兩個位址可以是同乙個位址,但是它的含義卻大不相同,ch不能用陣列的名稱給它賦值,定義大小後,就想想你給10個孩子糖, 你不能只給第乙個,然後其他孩子會不理你,我不是說你也明白。 >>>More
二維陣列實際上是陣列的陣列,因此指向二維陣列的指標是指向陣列的指標。 考慮到這一點,選擇返回型別很簡單。 >>>More
a 檢測10pF或更小的小電容。
由於10pf以下固定電容器的電容太小,只能用萬用表測量定性檢查是否有漏電、內部短路或擊穿。 測量時,可以選擇使用萬用表R 10K塊,用兩支儀表筆隨意連線電容器的兩個引腳,電阻值應為無窮大。 如果測得的電阻(指標向右擺動)為零,則表示電容器因漏電或內部擊穿而損壞。 >>>More