c語言數組的定義

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];

(1)小數組C語言擴展閱讀:

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。

其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

㈡ C語言 怎麼將數組變小

不能那麼作。

如果一定要這么做。
用這樣:

int *a;

a=(int *)malloc(sizeof(int)*20); //定義a[20];
a=(int *)realloc(a,sizeof(int)*10);//把之前a的值帶過來,並且分配新的數組大小。

㈢ C語言數組輸入。。

#include<stdio.h>
void main()
{
int i,j,k,min,n,m,max;
int a[9];
printf("請輸入十個數:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("你輸入的十個數為:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
min=a[0];
max=a[0];
for(i=1;i<10;i++)
{

if(max<a[i])
{
max=a[i];
n=i;
}

}

for(i=1;i<10;i++)
{

if(min>a[i])
{
min=a[i];
m=i;
}

}

printf("\n最大數為%d ,下標為%d\n",max,n);
printf("\n最小數為%d ,下標為%d\n",min,m);
}

20個元素也版是一樣的道理的。權

㈣ 初學者提問:c語言 數組太小

數組太多,數組太大,所以得運行錯誤。
「數組太小」在這里只表示有運行錯誤,不是真的說太小。
如果語句中用到的下標大於等於2000,(超過聲明),當然也是「數組太小」錯誤。
數組較多,較大應當採用動態分配內存法,即聲明為指針,要用時再分配內存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道數組大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下來可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函數
free
釋放掉它的內存。
}
數組太多,數組太大,所以得運行錯誤。
「數組太小」在這里只表示有運行錯誤,不是真的說太小。
如果語句中用到的下標大於等於2000,(超過聲明),當然也是「數組太小」錯誤。
數組較多,較大應當採用動態分配內存法,即聲明為指針,要用時再分配內存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道數組大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下來可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函數
free
釋放掉它的內存。
}
數組太多,數組太大,所以得運行錯誤。
「數組太小」在這里只表示有運行錯誤,不是真的說太小。
如果語句中用到的下標大於等於2000,(超過聲明),當然也是「數組太小」錯誤。
數組較多,較大應當採用動態分配內存法,即聲明為指針,要用時再分配內存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道數組大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下來可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函數
free
釋放掉它的內存。
}
數組太多,數組太大,所以得運行錯誤。
「數組太小」在這里只表示有運行錯誤,不是真的說太小。
如果語句中用到的下標大於等於2000,(超過聲明),當然也是「數組太小」錯誤。
數組較多,較大應當採用動態分配內存法,即聲明為指針,要用時再分配內存:
main()
{
int
*a1,*a2,*a3,*a4;
int
*ht,*h1,*h2,*h3,*h4;
int
*b1,*b2,*b3,*b4;
int
NN_b1,NN_b2,NN_b3,NN_b4;
要用b1,而且知道數組大小是NN_b1:
b1
=
(int
*)
malloc(NN_b1
*
sizeof(int));
接下來可以用
b1[i],
i=0,1,2,..NN_b1-1。
不再用了,就
用函數
free
釋放掉它的內存。
}

㈤ C語言中如何定義數組

數組定義的三種方式

1、第一種

int []a = newint[5];

a[0] = 10;

2、第二種

int []c = newint[]{1,2,3};

3、第三種

int []i ={1,2,3,4};

4、錯誤的寫法

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

System.out.println(Arrays.toString(c));

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

(5)小數組C語言擴展閱讀

數組的注意事項:

1、 數組中每個元素的數據類型必須相同,對於inta[4];,每個元素都必須為 int。

2、 數組長度 length最好是整數或者常量表達式,

3、 訪問數組元素時,下標的取值范圍為 0 ≤ index < length,

參考資料

網路-數組



㈥ C語言數組

#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<malloc.h>
voidsx(int*nums,intlen);//傳參數組、長度功能:將數組按升序排列
voidpsl(int*nums,intlen);//列印
intmain()
{
intn,i,*nums;
printf("輸入n的值(小於等於20):");
scanf("%d",&n);
nums=(int*)malloc(sizeof(int)*(n+1));
printf("生成隨機%d個2位數:",n);
srand(time(NULL));
for(i=0;i<n;i++)
nums[i]=rand()%100;
sx(nums,n);
printf(" 升序排列後的數列為:");
psl(nums,n);

printf(" 輸入要插入的數字:");
scanf("%d",&nums[n]);
sx(nums,n+1);
printf("插入後的升序數列為:");
psl(nums,n+1);
return0;
}
voidpsl(int*nums,intlen)
{
inti;
for(i=0;i<len;i++)
printf("%d",nums[i]);
}
voidsx(int*nums,intlen)//傳參數組、長度功能:將數組按升序排列
{
intnSave,i,j;
for(i=0;i<len;i++)
{
for(j=i;j<len;j++)
{
if(nums[i]>nums[j])
{
nSave=nums[i];
nums[i]=nums[j];
nums[j]=nSave;
}
}
}
}

㈦ C語言數組小問題

後30個數組單元不是NULL。靜態數組貌似不行,需要在釋放時才行,建議用動態數組。
方法(1)按需要int a[0]=new int[20],int a[1]=new int[20],(分開成幾部分new) 。然後把你不需要的delete掉。 delete a[1].
方法(2)一個折中的方法,演算法是:先開辟一個很大的空間來存放輸入的字元,然後統計字元長度,根據長度動態開辟空間,然後將輸入的字元復制到動態開辟的空間。結束。雖然有字元長度受限,不過運行起來還行。

㈧ c語言中關於數組的一點小問題

這是因為c數組只有5個元素,但是你的循環有10次(for(i=0;i<10;i++) c[i]=c[i]/10;),後5次其實修改的是b數組的值,這是典型的數組越界問題,但是因為c數組和b數組地址是連續的,所以沒報錯但是修改了你不想修改的值,這種錯很隱蔽!用數組要謹慎呀!

㈨ c語言數組

代碼里所有的a[9]要改成a[8]。因為a[8]才是第9個元素。

㈩ C語言數組小編程

#include<stdio.h>
main()
{
int a[10];
int i,m,t,j=0;
printf("請輸入10個整數\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
m=a[0];
for(i=0;i<10;i++)
{
if(a[i]<m)
{
m=a[i];
j=i;}
}
t=a[0];
a[0]=m;
a[j]=t;
for(i=0;i<10;i++)
printf("%d ",a[i]);
}