有關c語言陣列的宣告,建立,c語言陣列宣告問題

2022-03-18 08:39:17 字數 6042 閱讀 5580

1樓:匿名使用者

陣列名可以當做指標使用,但這種指標沒有實際佔用記憶體空間(不存在存放首地址什麼的),因為你只能對該類指標(陣列名)指向的資料操作!沒有你想的那種多佔一個空間存放地址的意思,陣列名不是完整意義的指標

2樓:哀傷の霜之哀傷

空間的位置看你的陣列在程式中定義的位置,有可能是棧,也可能是堆,也可能是全域性資料域。

array可以當做指標使用,表示指向陣列首地址的指標,數值與&array[0]相同,但意義不一樣。

int array[5]只分配了5個int的空間,無誤。

謝謝採納

3樓:匿名使用者

在c/c++裡面直接宣告的區域性變數是分配在棧中的,在函式執行完成的時候自動退棧而釋放;而使用malloc等函式自己動態申請的記憶體是放在堆中的,需要自己手動釋放。

陣列是沒有多一個變數的,int array[5] 就是5個空間,array本身就是array[0]的地址,在程式中有一個變數符號表,我們是看不到的,即變數符號與地址的對映關係

4樓:匿名使用者

我有同樣的想法,但是從來沒有問過老師或同學。

5樓:黃石佳誠家電維修

對,分配了5個整型空間,是棧,array[0]是該組的首地址

6樓:匿名使用者

陣列的建立:

(1)宣告一個陣列,宣告時用常量表示式指定陣列維數,然後可以用陣列名訪問陣列元素。

(2)宣告一個變長陣列,宣告時用變數表示式指定陣列維數,然後用陣列名來訪問陣列元素。

(3)宣告一個指標,呼叫malloc(),然後使用該指標來訪問陣列元素。malloc接受一個引數:所需記憶體位元組數。

然後malloc()找到可用記憶體中一個大小合適的塊。記憶體是匿名的;也就是說,malloc()分配了記憶體,但沒有為它指定名字。然而,它卻可以返回那塊記憶體第一個位元組的地址。

因此,可以把那個地址賦值給一個指標變數,並使用該指標來訪問那塊記憶體。因為char代表一個位元組,所以傳統上曾將malloc()定義為指向char的指標型別。

c語言陣列宣告問題

7樓:

有初始化的陣列定義可以省略方括號中的陣列大小。

例如,下面的**中陣列定義為5個元素:

int a=;如 char str="program"

編譯時必須知道陣列的大小。如果陣列大小要根據運**況來確定,可以使用動態陣列:

int *p=(int *)calloc(num,sizeof(int));

8樓:匿名使用者

一般有四種陣列定義方式,以一維陣列為例:

//定義指定維數的陣列

int arr[10];

//定義不指定維數的陣列,陣列維數有初化列表元素個數決定。

int arr = ;

//定義指定維數的陣列,初始化不完全時,系統將未初始化元素初始化為0int arr[10] = ;

//動態分配一個陣列。下面分配了一個有10個元素的陣列。

int *arr =(int *) malloc(10 * sizeof(int));

9樓:匿名使用者

你說的是該型別指標可以不指定寬度吧,動態建立的那種可以。

那是int *a;才可以吧

c語言中如何定義陣列

10樓:文望刃

c語言中,同變數一樣;陣列也必須先定義後使用。

一維陣列的定義形式:

型別識別符號  陣列名[常量表示式];例如int a[10];   其中a為地址常量。

如變數的定義一樣,int a ;double a;float a等;陣列的定義只是把後面的變數名改為陣列名而已。

int a[10]就是定義了一個陣列名為a的陣列;此陣列有10個元素。其中各元素從a[0]到a[9];並沒有a[10]元素。下面列舉一個。

常量表示式可以包括字面常量和符號常量;但不能包含變數。例如對下面定義是錯誤的

int n=5

int a[n]

可以修改為

#define n 5

int a[n]

其中對二維及多位陣列定義可以類推

int  a[x][y][z][...]其中 x,y,z為數字。

11樓:匿名使用者

陣列定義的三種方式

1、第一種

int a = newint[5];

a[0] = 10;

2、第二種

int c = newint;

3、第三種

int i =;

4、錯誤的寫法

int i1 = [1,2,3,4];

system.out.println(arrays.tostring(c));

5、總之,具體的元素不能被【】包裹。【】包裹的應該是陣列的數量。

擴充套件資料陣列的注意事項:

1、 陣列中每個元素的資料型別必須相同,對於inta[4];,每個元素都必須為 int。

2、 陣列長度 length 最好是整數或者常量表示式,3、 訪問陣列元素時,下標的取值範圍為 0 ≤ index < length,

參考資料

12樓:星願

定義整形陣列

int a[5];

int a = ;

int a[3][4];/*建立一個有3行4列的二維陣列*/

printf("please enter a[i]");

for(i=0;i<5;i++)

scanf("%d",&a[i]);

可以完成a[5]的陣列輸入

13樓:育知同創教育

主函式內定義的陣列在堆疊段中分配記憶體。

全域性變數陣列在資料段中分配記憶體。

一般資料段比堆疊段大很多,

所以堆疊段分配不了的記憶體,資料段可以分配

(1)在堆疊段中分配記憶體,由於太大無法分配,所以錯誤。

(2)在資料段中分配記憶體,資料段可以分配,無錯誤。

(3)陣列比(1)需要的記憶體少,在堆疊段大小範圍內,可以分配,無錯誤(4)同(3)

14樓:匿名使用者

int a[3];/*建立一個有3個元素的一維陣列*/

int a[3][4];/*建立一個有3行4列的二維陣列*/

int a[4][5][6];/*建立一個有4層5行6列的三維陣列*/

15樓:匿名使用者

定義一維陣列:int a[n] 如:int a[3] ,表示這個陣列可以存三個數: 1 4 2

定義二維陣列: int a[m][n] 如 int a[2][3],標售這個陣列可以存2行三列 共6個數:

如:2 4 4

5 6 7

16樓:風了瘋了鋒了

如果是定義數

組,一維陣列就是int a[10];

型別說明符 陣列名[常量表示式];

二維陣列 int a[3][4];

型別說明符 陣列名[常量表示式] [常量表示式];

但我覺得這個比較好理解,難一點的就是關於陣列的輸入要用到for的迴圈語句

printf("please enter a[i]");

for(i=0;i<5;i++)

scanf("%d",&a[i]);

可以完成a[5]的陣列輸入

17樓:匿名使用者

例如定義整形陣列

int a[5];

int a = ;

18樓:

詳細瞭解c語言程式設計知識第七節-c語言陣列定義,標識與賦值

c語言陣列的初始化表示方法

19樓:匿名使用者

在c語言中,陣列的初始化有以下幾種方式:

1、定義的時候同時初始化:

int array[10] = ;

2、定義的時候不指定陣列大小,由初始化的陣列元素來確定大小:

int array = ;

3、先定義變數,然後初始化.注意點:定義變數時必須制定陣列的大小.此時只能對陣列變數成員元素逐一賦值,不能批量賦值.

//    int array; //錯誤用法

int array[12];

//    array = ; //錯誤用法.

array[0] = 1;

array[1] = 2;

array[2] = 3;

4、只有一種情況,在作為方法的形式引數時,可以不指定陣列的大小.這時傳入方法的是陣列的首地址,所以在方法內部是無法得到陣列長度的,陣列長度必須作為引數傳入函式.

void test()

;int length = sizeof(array)/sizeof(int);

int result = sumofarray(array, length);

printf("%d",result);

}int sumofarray(int array, int length)

return result;

}擴充套件資料

c語言陣列構建:

1、遵循原則

申請的時候從外層往裡層,逐層申請;

釋放的時候從裡層往外層,逐層釋放。

2、構建所需指標

對於構建一維動態陣列,需要一維指標;

對於二維,則需要一維,二維指標;

三維需要一,二,三維指標;

依此類推。

參考資料

20樓:文望刃

不是inta   而是例如int a[10]這種。括號內一定要有個常量數字。

我們可以這樣定義

#define n 5

int a[n]

這表明了陣列名為a;陣列有5個元素;分別是a[0]到a[4];

對於陣列來說;陣列是變數的集合,因此陣列也具有與變數相同的資料型別和儲存型別。陣列的型別就是它所有的變數的型別。在定義陣列時,應在陣列名前對陣列的型別加以確定。

如上面的int a[10];則表明了陣列內元素均為整形。

所有當表示浮點型可以定義為例如float a[10]。 舉例如下:

陣列名是由使用者命名的c語言識別符號,要遵循識別符號命名規則。陣列名錶示陣列儲存區域的首地址。陣列的首地址也就是第一個元素的地址。陣列名是一個地址常量,不能對它賦值。

陣列名後是由方括號括起來的常量表示式,不能使用其他括號

21樓:臺式小情歌

c語言陣列的初始化表示方法有4種,分別是:

1、定義的同時進行初始

化,我們同樣用陣列的初始化引出結構體的初始化,我們知道陣列在定義的同時進行初始化的**如下:

int nums = ;

由此可推出結構體在定義的同時進行初始化的**如下:

struct person p = ;

2、先定義再進行初始化,這種初始化方法其實昨天的內容裡已經寫過了,**如下:

struct person p;

p.name = "lee";

p.age = 23;

p.height = 1.8;

我們知道資料定義好後就不能對其進行一次性初始化了,比如如下**是編譯不通過的。

int nums[3];

num =

3、第三種結構體比較例外,它可以這樣做,只不過需要對其進行一下強制型別轉換,**如下:

struct person p;

p = (struct person)

4、指定將資料賦值給指定的屬性,陣列中我們見過這種寫法,**如下:

int nums[3] = ;

我們可以為不同的索引指定值,並不需要一定要按順序來,所以陣列可以,結構體是否可以呢,當然,**如下:

struct person p = ;

c語言二維陣列的賦值,c語言有關二維陣列變數初始化

1 首先在電腦上開啟抄c語言程式設計軟襲件。然後建立專案。2 然後匯入stdio.h和stdlib包。再加入malloc包。3 然後定義五個引數。再建立其中兩個引數的空間。4 然後用for語句進行迴圈。再用scanf語句進行接收輸入到二維陣列。5 然後用兩個for語言迴圈。再輸出二維陣列的數值。6 ...

關於c語言陣列的運算,關於C語言陣列的運算。

首先你可以進行單步測試自己看看能不能學習到過程 程式設計師以後寫程式排錯 要學會自己單步測試找問題 過程很簡單 你定義了一個1維陣列 陣列長度為10 從a 0 a 9 進行for迴圈計算 i 9 a 9 10 9 1 同理 a8 2 a5 5 a2 8 所以輸出 a2,a5,a8 分別就是852 希...

有關陣列的程式設計問題,c語言,有關陣列的程式設計問題,c語言

這個比較短 include define n 100 int main void 學弟,不是學長不想幫你,怕你老師罵我 給你說個思路吧,既然是找最大,那就先初始讓max等於第一個,用陣列記錄學號,用一個num記錄一哥人數 後面跟前面的比,若大,則替換max為後面的,一哥人數 置1,陣列第一個放他的學...