1樓:網友
a[0][0]是a陣列的第乙個元素,而a中的元素都是char,所以&a[0][0]就是乙個指向char的指標,因此就是char*;&a[0][0]+1 = a[0][1]
因為a是乙個大小為m*n的char陣列,所以在程式中a就代表了這個陣列,因此a就是char[m][n],雖然它的值也是等於&a[0][0],但是在程式中的語義不同。
我們可以在c語言中定義乙個a[n],即第一維可以不用給出具體值,但是n必須給出,根據conversion of array type to pointer type的原則當a變成指標時會被轉換為指向長度為n的一維陣列的指標,所以a+1的值是等於a[1][0]的位址。
二維陣列[m][n]可以看成有個m個長度為n的一維陣列組成,而char(*)n]就表示的是該指標是指向乙個長度為n的一維陣列。而&a就是(將a作為乙個整體,即大小為[m][n]的char陣列)取a的位址,因此。
a)+1的值等於a[m][0]的位址,(注意a的範圍是a[0][0]~a[n-1][m-1]),已經跨越了a陣列了。
你可以做實驗來確認一下,我已經在linux平台下的gcc下驗證過了。
2樓:冰藍月零凍
char*是字元型指標。
char[m][n]是字元型陣列。
char(*)n]是字元型二維陣列指向第一行的指標。
第乙個元素的位址要用指標格式表示,用其他的形式表示式不好的習慣(數值上雖然相等,但涉及到指標的移動啊等更深入的操作時可能出錯)
編寫c語言,關於陣列的。
3樓:阿四哥
c語言的陣列概念的學習,通過for迴圈輸出列印陣列。
關於c語言陣列的一些疑惑?
4樓:匿名使用者
書上說的沒錯,你可能把array[10]理解成乙個陣列元素了吧,其實它只是把乙個包含有10個元素的陣列作為引數,而不是乙個陣列元素,明白了嗎?
5樓:格里程式設計辦公技巧
左邊書上說的是陣列的元素不能作為形參,不能理解為陣列不能作為形參。
實際上這書它說的太繞了,不易理解。
只要記住陣列作為函式引數可以由下面幾種方式:
1. type fun(type arr,int size);
fun(type *arr, int size);
fun(type arr[常數], int size);
其中1/2種方式是最常用的,第三種不常用,一般不會寫常數因為寫了編譯器也不關心。另外乙個問題也是你問的吧具體可以看看那個說明。
6樓:匿名使用者
陣列元素不能作為形參, 但是陣列能啊, 例子中形參是乙個陣列。
c語言陣列定義的幾種方式
7樓:匿名使用者
陣列的定義。
陣列就是指用於儲存同一型別資料的集合,乙個陣列實際上就是一連串的變數,陣列按照使用可以分為一維陣列、二維陣列、多維陣列。
陣列定義的方式。
陣列定義的方式有四種形式,分別是:
1)型別名 陣列名;
2)型別名 陣列名 =
3)型別名 陣列名 = new 型別名[ 陣列大小 ];
4)型別名 陣列名 = new 型別名[ 陣列大小 ]資料型別:指的是陣列元素的資料型別,常見的有整形、浮點型、與字元型等。
陣列名:是用來統一這組相同資料型別元素的名稱,其命名規則和變數的相同。
c語言陣列的定義以及使用
8樓:匿名使用者
一維陣列一般形式; 型別符 陣列名【常量表示式】
9樓:芃芃
定義:組是在程式設計中,為了處理方便, 把具有相同型別的若干變數按有序的形式組織起來的一種形式。這些按序排列的同類資料元素的集合稱為陣列。
實際應用:#include
void main()
陣列輸出。printf("您輸入的十個數為:")
for(i=0;i<10;i++)
c語言中的陣列什麼意思?
10樓:離溫景
所謂陣列,是有序的元素序列。陣列是在程式設計中,為了處理方便, 把具有相同型別的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類資料元素的集合稱為陣列。
比如油煙機的風扇轉速會和工作的模式之間有一定的關係,那麼我們就可以把它的工作模式和一維陣列的下標對應起來,我們將具體的轉速放在陣列中,這樣的話就非常方便我們在日後查詢。
再比如說家中的冷暖燈光控制這方面,色溫燈裡會有兩個燈珠,分別對應的是冷光和暖光,選擇不同的模式燈光的顏色就不同,我們就可以將這兩種燈光的亮度pwm值事先放在二維陣列中,以便呼叫調光。
在程式中合理地使用陣列,會使程式的結構比較整齊,而且可以把較為複雜的運算,轉化成簡單的陣列來表示。
11樓:匿名使用者
1、陣列,顧名思義,是相同型別的數組成的乙個組,也就是說是把相同型別的一系列資料統一編制到某乙個組別中。這樣就可以通過陣列名+索引號簡單快捷的操作大量資料。這就和全校學生一樣,把學生分成多個班級,每個學生都是班級中的一員,如果要找張三,如果沒有班級的話,就要在全校學生中乙個乙個尋找,一直到找到為止;但是如果引入了班級,就可以在某某班級中尋找張三,這樣就更加方便快速了。
2、一般有四種陣列定義方式,以一維陣列為例:
定義指定維數的陣列。
int arr[10];
定義不指定維數的陣列,陣列維數有初化列表元素個數決定。
int arr =
定義指定維數的陣列,初始化不完全時,系統將未初始化元素初始化為0int arr[10] =
動態分配乙個陣列。下面分配了乙個有10個元素的陣列。
int *arr =(int *)malloc(10 * sizeof(int));
c語言中陣列的用途有哪些??詳細說明!
12樓:匿名使用者
舉例說明吧。
在c語言裡要儲存乙個人的姓名、性別、位址等這些字串型資訊,必須用陣列。否則程式中無法處理這類資訊。
另外,還有,如果要儲存乙個班級的c語言成績,也必須用陣列。否則,需要定義n個普通變數(n為學生數)。
在c語言中陣列名是乙個什麼的常量
13樓:匿名使用者
陣列名是代表該陣列的首位址且符合識別符號書寫規定的變數識別符號。
整個陣列是以首位址開頭的一塊連續的記憶體單元。如有字元陣列char c[10],設陣列c的首位址為2000,也就是說c[0]單元位址為2000。則陣列名c就代表這個首位址。
因此,在使用scanf()函式的時候,變數c前是不能新增位址運算子&的,scanf("%s",&c);則是錯誤的的寫法。
14樓:聽不清啊
在c語言中陣列名就是乙個指向同名陣列首位址的乙個(該陣列元素型別的)指標常量。
例如:int a[100];
那麼,a就是乙個指向a[0]的int 型的指標常量。
15樓:匿名使用者
int [10] 型別。
理解成:int陣列型別,陣列大小為10。
你可以使用這個檢視:
#include
using namespace std;
int main()
int ar[10];
cout《或者你在編譯器裡面單步除錯到int ar[10],然後在變數檢視視窗裡面可以看到該變數ar的型別。
16樓:
int a[10]; a的型別為const int *,是常值整型指標,不能改變a的值。
17樓:匿名使用者
陣列名代表該陣列的起始位址,沒別的意思,你可以用vc++除錯,可以看到陣列名,就是乙個位址。
18樓:1234567珏
陣列名 代表首位址,,,這樣看來可以當做int 但貌似可以自定義。。
c中,陣列名跟指標有區別嗎,C語言中陣列名和指標的區別
其實可以認為陣列名就是乙個不可更改的常量指標。但是 嚴格來說,二者有一定區別,比如sizeof a a為陣列名的時候,算出來是a這個陣列所佔位元組數,但是如果a是指標,不管指向什麼,結果都是乙個int的位元組數 取決於特定機器 因而,有人認為陣列名是乙個可以退化為常量指標的型別,這種退化在陣列名作為...
關於c語言二維陣列陣列名與指標的問題
先說些這個2維陣列 int arr 3 4 可以理解為乙個3行四列的矩陣,那麼第一維arr 0 arr 1 arr 2 中存的分別是對應行的位址,也就是說arr 0 存的是乙個 大小為4的整形陣列位址 這樣的話就好理解了,arr存的位址值其實與arr 0 本質上是相同的。都是這個連續空間的開始位址。...
C語言書上說,陣列名是指標常量,可是我每次執行程式後位址都會改變啊
視窗關閉就意味著程式的結束,所以陣列名指標就會到了最開始的位置。常量在一次執行時不變,誰告訴你,兩次執行也不變,何況 p你不用,非用 x誰告訴你這是正確用法,這是未定義的!在windows裡用vc的話,由於每個程序都有自己的位址空間,都從0x00400000開始執行,載入後資料的位址應該一樣的,雖然...