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,陣列第一個放他的學...