1樓:春志學陳卓
一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫:
void
swp(int*
p){}
在呼叫的時候swp(array)也是可以的。只要傳遞給函式一個陣列的首指標就行了,而你的array正好是陣列的首指標。
2樓:承懷蕾稱優
char
s[10]="123"是表示前三個元素分別是1,2,3但s[2]='\0'
表示的是沒有字元,就是空了.再說你的s[2]已經是呼叫字元了的,和這個字元陣列中的別的元素已經沒有什麼關係了的.
'\0'為字串的結束符.
3樓:吾樂安貿航
如果在參數列中,int
,實際會被轉換成int
*。不信你可以試試這個程式:
#include
void
f(int
b[10])
void
main()
至於為什麼,就是為了防止傳遞陣列,c認為有一個原始的,就操作它好了,如果你覺得要另立副本,就自己新分配記憶體,或者用自己auto分配的記憶體,將內容複製過來。當然c++的今天,你可以用引用或者物件複製,來強行真正去傳整個陣列。
不能說簡單型別傳值,陣列只傳首地址指標就不好,現在很多語言還都傳引用,但是真正需要副本時,要想辦法,否則可能出現功能問題。
c語言中如何定義陣列
4樓:匿名使用者
在c語言中使用陣列必須先進行定義。一維陣列的定義方式為:
型別說明符 陣列名 [常量表示式];
其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表示式表示資料元素的個數,也稱為陣列的長度。例如:
對於陣列型別說明應注意以下幾點:
1) 陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。
2) 陣列名的書寫規則應符合識別符號的書寫規定。
3) 陣列名不能與其它變數名相同。例如
是錯誤的。
4) 方括號中常量表示式表示陣列元素的個數,如a[5]表示陣列a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0], a[1], a[2], a[3], a[4]。
5) 不能在方括號中用變數來表示元素的個數,但是可以是符號常數或常量表示式。例如:
是合法的。但是下述說明方式是錯誤的。
6) 允許在同一個型別說明中,說明多個陣列和多個變數。例如:
c語言陣列的定義
5樓:打孃胎裡喜歡你
c語言支援一維陣列和多維陣列。如果一個陣列的所有元素都不是陣列,那麼該陣列稱為一維陣列。
在c語言中使用陣列必須先進行定義,一維陣列的定義方式為:型別說明符; 陣列名 ;[常量表示式]。
其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號,方括號中的常量表示式表示資料元素的個數,也稱為陣列的長度。例如:
int a[10]; /* 說明整型陣列a,有10個元素 */
float b[10], c[20]; /* 說明實型陣列b,有10個元素,實型陣列c,有20個元素 */
char ch[20]; /* 說明字元陣列ch,有20個元素 */
對於陣列型別說明應注意以下幾點:
1、陣列的型別實際上是指陣列元素的取值型別。對於同一個陣列,其所有元素的資料型別都是相同的。
2、陣列名的書寫規則應符合識別符號的書寫規定。
3、陣列名不能與其它變數名相同。例如:
int a;
float a[10];
是錯誤的。
4、方括號中常量表示式表示陣列元素的個數,如a[5]表示陣列a有5個元素。但是其下標從0開始計算。因此5個元素分別為a[0], a[1], a[2], a[3], a[4]。
5、不能在方括號中用變數來表示元素的個數,但是可以是符號常數或常量表示式。例如:
#define fd 5
// ...
int a[3+2],b[7+fd];
是合法的。但是下述說明方式是錯誤的。
int n=5;
int a[n];
6、允許在同一個型別說明中,說明多個陣列和多個變數。例如:
int a,b,c,d,k1[10],k2[20];
6樓:文化廚子
一般有四種陣列定義方式,以一維陣列為例:
//定義指定維數的陣列
int arr[10];
//定義不指定維數的陣列,陣列維數有初化列表元素個數決定。
int arr = ;
//定義指定維數的陣列,初始化不完全時,系統將未初始化元素初始化為0int arr[10] = ;
//動態分配一個陣列。下面分配了一個有10個元素的陣列。
int *arr =(int *) malloc(10 * sizeof(int));
7樓:帆帆
元素型別名 陣列名[元素個數] 定義一個包含十個int型元素的陣列,陣列名為arr:int arr[10];//int為元素的型別,不是陣列的型別,陣列是int[10]型別的。
動態陣列與靜態陣列的對比對於靜態陣列,其建立非常方便,使用完也無需釋放,要引用也簡單,但是建立後無法改變其大小是其致命弱點!
對於動態陣列,其建立麻煩,使用完必須由程式設計師自己釋放,否則嚴重會引起記憶體洩露。但其使用非常靈活,能根據程式需要動態分配大小。
如何構建動態陣列遵循原則
申請的時候從外層往裡層,逐層申請;
釋放的時候從裡層往外層,逐層釋放。
構建所需指標對於構建一維動態陣列,需要一維指標;
對於二維,則需要一維,二維指標;
三維需要一,二,三維指標;
依此類推。
c語言中如何定義陣列
8樓:文望刃
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為數字。
9樓:匿名使用者
陣列定義的三種方式
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,
參考資料
10樓:星願
定義整形陣列
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]的陣列輸入
11樓:育知同創教育
主函式內定義的陣列在堆疊段中分配記憶體。
全域性變數陣列在資料段中分配記憶體。
一般資料段比堆疊段大很多,
所以堆疊段分配不了的記憶體,資料段可以分配
(1)在堆疊段中分配記憶體,由於太大無法分配,所以錯誤。
(2)在資料段中分配記憶體,資料段可以分配,無錯誤。
(3)陣列比(1)需要的記憶體少,在堆疊段大小範圍內,可以分配,無錯誤(4)同(3)
12樓:匿名使用者
int a[3];/*建立一個有3個元素的一維陣列*/
int a[3][4];/*建立一個有3行4列的二維陣列*/
int a[4][5][6];/*建立一個有4層5行6列的三維陣列*/
13樓:匿名使用者
定義一維陣列: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
14樓:風了瘋了鋒了
如果是定義數
組,一維陣列就是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]的陣列輸入
15樓:匿名使用者
例如定義整形陣列
int a[5];
int a = ;
16樓:
詳細瞭解c語言程式設計知識第七節-c語言陣列定義,標識與賦值
c語言中一維陣列正確的定義
17樓:旅者一生
符號常量是用一個識別符號來表示一個常量,一維陣列的定義方法為:型別說明符+陣列名+[常量表示式];
型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表示式表示陣列元素的個數或者長度,可以是常量或符號常量,不能為變數。
例如:1、int x[8]; 表示定義一個整型陣列x,陣列長度為8.
2、float a[8],b[10];表示定義一個實型陣列b,陣列長度為8,一個實型陣列c,陣列長度為10
3、 ch[15]; 表示定義一個字元陣列ch,陣列長度為15。
擴充套件資料
在程式中可以使用下標變數,即說明這些變數的整體為陣列,陣列中的每個變數的資料型別是相同的。當陣列中每個元素都只帶有一個下標時,稱這樣的陣列為一維陣列。
一維陣列是由數字組成的以單純的排序結構排列的結構單一的陣列。一維陣列是計算機程式中最基本的陣列。二維及多維陣列可以看作是一維陣列的多次疊加產生的。
陣列是計算機程式設計中的重要概念,運用陣列可以方便地處理大規模的資料。
18樓:
定義如下:
符號常量是用一個識別符號來表示一個常量,一維陣列的定義方法為:型別說明符+陣列名+[常量表示式];型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。
方括號中的常量表示式表示陣列元素的個數或者長度,可以是常量或符號常量,不能為變數。
c語言中如何定義二維陣列,C語言中如何定義一個二維陣列
int a 2 3 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 表示兩行三列 include main int i,j,total 0 for i 0 i 3 i printf n printf total d n total 用指標new出來 二維陣列定義必須規定列 i...
c語言中陣列下標最大為多少C語言中陣列下標最大為多少
陣列下標最大為陣列個數減一,例如定義 int a 5 則陣列a的下標最大為4 因為在c語言中陣列的下標是從0開始的,這樣從0到陣列個數減一,共陣列的總個數。例如 include int main 執行結果 1 2 3 4 5 1 2 3 4 5 額 沒有那麼多的吧記憶體吧 比如說int a 5 他的...
c語言中陣列指標a有啥區別,C語言中陣列指標 a 與a 有啥區別?
第一個a中有2個符號,所以要看優先順序,看限於誰結合。已知比 優先所以版第一個a先與 權結合,所以a是一個陣列,陣列中的元素都是指標a就單單表示陣列。例子 char a a是陣列,元素都是char 即指標 char a a是陣列,元素都是char 即字元 a 這個為指標陣列,int a 5 就定義了...