㈠ 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語言關於數組的基礎知識
c[2]指的是 c[2]這個數組的首地址
一般定義了一個字元數組 str[100] 後,直接寫 str 表示該數組的首地址。
而訪問一個字元數組,也可以通過首地址直接訪問。
㈢ C語言中的數組是什麼意思
把具有相同數據類型的若干變數按有序的形式組織起來,
以便於程序處理,這些數據元素的集合就是數組,按照數組
元素的類型不同,可分為:數值數組、字元數組、指針數組
結構數組等各種類別。
數組說明的一般形式為:
類型說明符 數組名[常量表達式],......;
其中類型說明符可以是任一種基本數據類型或構造數據類型
數組名是定義的數組標識符。常量表達式表示數據元素的個
數,也就是數組的長度。
對數組類型的說明應注意:
1)數組的類型實際上是數組元素的取值類型。
2)數組名的書寫應符合標識符的書寫規范。
3)數組名不能與其他變數名相同。
4)常量表達式表示數組元素的個數,但是其下標從0開始計算
5)不能在方括弧中用變數來表示元素的個數,但是可以用符號
常數或常量表達式。
6)允許在同一個類型說明中,說明多個數組和多個變數。
數組元素的表示方法
一般比較簡單就是數組名[下標]來引用,先定義後用,如果
是小數的話,直接自動取整。
數組賦值分為:初始化賦值和動態賦值
初始化賦值一般形式為:
static 類型說明符 數組名[常量表達式]={值,值......};
static表示靜態存儲類型,c語言規定只有靜態存儲數組和外部數組
才可做初始化賦值。
c語言對數組的初始化賦值還有幾個規定:
1)可以只給部分元素賦值。
2)只能給元素逐個賦值,不能給數組整體賦值。
3)如不給可初始化的數組賦初值,在在數組說明中,可以不給出數組
元素的個數。
下面看一下多維數組
主要看一下二維數組,其他的就可以用二維數組類推得到
二維數組的類型說明的一般形式是:
類型說明符 數組名[常量表達式1][常量表達式2]...;
在c語言中二維數組是按行排列的
二維數組的表示方法:
數組名[下標][下標]
二維數組的初始化
二維數組初始化也是在類型說明時給各下標變數賦以初值。 二維數組可
按行分段賦值,也可按行連續賦值。
二維數組的初始化還應該注意:
1)可以只對部分元素賦初值,未賦初值的元素自動取為0。
2)如對全部元素賦初值,則第一維的長度可以不給出。
字元數組:
用來存放字元變數的數組稱為字元數組。
C語言允許用字元串的方式對數組作初始化賦值。例如:
static char c[]={'c', ' ','p','r','o','g','r','a','m'}; 可寫為:
static char c[]={"C program"}; 或去掉{}寫為:
sratic char c[]="C program";
用字元串方式賦值比用字元逐個賦值要多佔一個位元組, 用於存放字元串結
束標志'\0'。上面的數組c在內存中的實際存放情況為: C program\0`\0'是
由C編譯系統自動加上的。由於採用了`\0'標志,所以在用字元串賦初值時一
般無須指定數組的長度, 而由系統自行處理。在採用字元串方式後,字元數
組的輸入輸出將變得簡單方便。 除了上述用字元串賦初值的辦法外,還可用
printf函數和scanf函數一次性輸出輸入一個字元數組中的字元串, 而不必
使用循環語句逐個地輸入輸出每個字元。
void main()
{
static char c[]="BASIC\ndBASE";
printf("%s\n",c);
} printf("%s\n",c);
注意在本例的printf函數中,使用的格式字元串為"%s", 表示輸出的是一
個字元串。而在輸出表列中給出數組名則可。 不能寫為: printf("%s",c[]);
void main()
{
char st[15];
printf("input string:\n");
scanf("%s",st);
printf("%s\n",st);
} char st[15];
本例中由於定義數組長度為15, 因此輸入的字元串長度必須小於15,
以留出一個位元組用於存放字元串結束標志`\0`。 應該說明的是,對一個字
符數組,如果不作初始化賦值,則必須說明數組長度。還應該特別注意的是,
當用scanf函數輸入字元串時,字元串中不能含有空格,否則將以空格作為串
的結束符。例如運行例4.8,當輸入的字元串中含有空格時,運行情況為:
input string:this is a book this 從輸出結果可以看出空格以後的字元
都未能輸出。 為了避免這種情況, 可多設幾個字元數組分段存放含空格的
串。程序可改寫如下:
Lesson
void main()
{
char st1[6],st2[6],st3[6],st4[6];
printf("input string:\n");
scanf("%s%s%s%s",st1,st2,st3,st4);
printf("%s %s %s %s\n",st1,st2,st3,st4);
}
本程序分別設了四個數組, 輸入的一行字元的空格分段分別裝入四個數組。
然後分別輸出這四個數組中的字元串。在前面介紹過,scanf的各輸入項必須以
地址方式出現,如 &a,&b等。但在例4.8中卻是以數組名方式出現的,這是為
什麼呢?這是由於在C語言中規定,數組名就代表了該數組的首地址。 整個
數組是以首地址開頭的一塊連續的內存單元。如有字元數組char c[10],在
內存可表示如圖4.2。設數組c的首地址為2000,也就是說c[0]單元地址為2000。
則數組名c就代表這個首地址。因此在c前面不能再加地址運算符&。如寫作
scanf("%s",&c);則是錯誤的。 在執行函數printf("%s",c) 時,按數組名c
找到首地址,然後逐個輸出數組中各個字元直到遇到字元串終止標志'\0'為止。
字元串常用函數:
用於輸入輸出的字元串函數在使用前應包含頭文件"stdio.h",使用其他字元串
函數則應包含頭文件"string.h".下面介紹幾個常用的字元串函數:
1)字元串輸出函數 puts 格式:puts(字元數組名) 功能:把字元數組中的字元
串輸出到顯示器。
#include"stdio.h"
main()
{
static char c[]="BASIC\ndBASE";
puts(c);
}
2)字元串輸入函數gets 格式:gets(字元數組名) 功能:從標准輸入設備上
輸入一個字元串。
#include"stdio.h"
main()
{
char st[15];
printf("input string:\n");
gets;
puts;
}
tips:gets函數並不以空格作為字元串輸入結束的標志,而只是以回車作為輸入
結束,這是與scanf不同的部分
3)字元串連接函數strcat 格式:strcat(字元數組名1,字元數組名2)
功能:把字元數組2中的字元串連接到字元數組1中字元串後面,並刪去字元串
1後的串標志"\0",本函數返回字元數組1的首地址。
#include"string.h"
main()
{
static char st1[30]="My name is ";
int st2[10];
printf("input your name:\n");
gets(st2);
strcat(st1,st2);
puts(st1);
}
4)字元串拷貝函數strcpy 格式:strcpy(字元數組名1,字元數組名2)
功能:把字元數組2中的字元串拷貝到字元數組1中,串結束標志 "\0"也一同
拷貝,字元數組2也可以是一個字元常量,就相當於把一個字元串賦予一個字元數組
#include"string.h"
main()
{
static char st1[15],st2[]="C Language";
strcpy(st1,st2);
puts(st1);
printf("\n");
}
5)字元串比較函數strcmp格式:strcmp(字元數組1,字元數組2) 功能:
按照ASCII碼順序比較兩個數組中的字元串,並有函數返回值返回比較結果
#include"string.h"
main()
{
int k;
static char st1[15],st2[]="C Language";
printf("input a string:\n");
gets(st1);
k=strcmp(st1,st2);
if(k==0) printf("st1=st2\n");
if(k>0) printf("st1>st2\n");
if(k<0) printf("st1<st2\n");
}
6)測字元串長度的函數strlen 格式:strlen(字元數組名) 功能:
測字元串的實際長度(不含字元串結束標志"\0")並作為函數返回值
#include"string.h"
main()
{
int k;
static char st[]="C Language";
k=strlen;
printf("The lenth of the string is %d\n",k);
}
程序舉例:
例一:
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s<=i;s--) a[s+1]=a[s];<br>break;}
a[i]=n;
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
例二:
main()
{
static int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
int b[3],i,j,l;
for(i=0;i<=2;i++)
{
l=a[i][0];
for(j=1;j<=3;j++)
if(a[i][j]>l) l=a[i][j];
b[i]=l;
}
printf("\narray a:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("\narray b:\n");
for(i=0;i<3;i++)
printf("%5d",b[i]);
printf("\n");
}
例三:
void main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{
p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{strcpy(st,cs[i]);<br>strcpy(cs[i],cs[p]);<br>strcpy(cs[p],st);<br>}
puts(cs[i]);
printf("\n");
㈣ 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、總之,具體的元素不能被【】包裹。【】包裹的應該是數組的數量。
(4)c語言數組的基本理論擴展閱讀
數組的注意事項:
1、 數組中每個元素的數據類型必須相同,對於inta[4];,每個元素都必須為 int。
2、 數組長度 length最好是整數或者常量表達式,
3、 訪問數組元素時,下標的取值范圍為 0 ≤ index < length,
參考資料
網路-數組
㈤ c語言中的數組的定義是什麼
在C語言中使用數組必須先進行定義。
一維數組的定義方式為:
類型說明符 數組名 [常量表達式];
其中:
類型說明符是任一種基本數據類型或構造數據類型。
數組名是用戶定義的數組標識符。
方括弧中的常量表達式表示數據元素的個數,也稱為數組的長度。
例如:
int a[10]; 說明整型數組a,有10個元素。
float b[10],c[20]; 說明實型數組b,有10個元素,實型數組
c,有20個元素。
char ch[20]; 說明字元數組ch,有20個元素。
㈥ c語言數組構造類型的特點
c語言數組構造類型的特點如下:
數組是相同的數據類型的元素的集合。
數組中的各元素的存儲是有先後順序的,他們在內存中按照這個先後順序放在一起。
數組元素用整個數組的名字和它自己在數組中的順序位置來表示。
數據的大小是固定的。
數組(Array)就是一些列具有相同類型的數據的集合,這些數據在內存中依次挨著存放,彼此之間沒有縫隙。
數組不是C語言的專利,Java、C++、C#、JavaScript、PHP 等其他編程語言也有數組。C語言數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指針數組、結構數組等各種類別。
㈦ C語言數組的基礎問題
首先,在C語言中,數組是一個變數類型。
C語法規定,當在定義數組時,定義格式為:數組中元素類型 數組名[數組元素個數N] ;
那麼這個時候,數組元素個數N為數組的長度,也就是數組中有幾個數組。
當使用數組元素時,數組元素從0開始索引,調用格式為:數組名[索引n];
這時,n為索引,什麼是索引,也就是他的下標,n取值為0~N-1。
所以數組名後面的數字在定義和調用時候的含義是不同的。
㈧ C語言數組的定義以及使用
定義:組是在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來的一種形式。這些按序排列的同類數據元素的集合稱為數組。
實際應用:
#include <stdio.h>
void main()
{
int ary[10];//數組聲明,可存放10個元素,序號是0~9
int i;
for(i=0;i<10;i++)
{
printf("請按數序輸入第%d個數:",i+1);
scanf("%d",&ary[i]); //依次輸入十個整數並保存到數組
}
//數組輸出
printf("您輸入的十個數為:\n");
for(i=0;i<10;i++)
{
printf("%d,"a[i]);
}
}
㈨ C語言中的數組什麼意思
所謂數組,是有序的元素序列。數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類數據元素的集合稱為數組。
比如油煙機的風扇轉速會和工作的模式之間有一定的關系,那麼我們就可以把它的工作模式和一維數組的下標對應起來,我們將具體的轉速放在數組中,這樣的話就非常方便我們在日後查詢。
再比如說家中的冷暖燈光控制這方面,色溫燈里會有兩個燈珠,分別對應的是冷光和暖光,選擇不同的模式燈光的顏色就不同,我們就可以將這兩種燈光的亮度pwm值事先放在二維數組中,以便調用調光。
在程序中合理地使用數組,會使程序的結構比較整齊,而且可以把較為復雜的運算,轉化成簡單的數組來表示。
(9)c語言數組的基本理論擴展閱讀:
一、使用規則:
1、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。
2、只能給元素逐個賦值,不能給數組整體賦值。
(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
3、若不給可初始化的數組賦初值,則全部元素均為0值。
4、假如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。
動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
二、表示方法:
數組元素是組成數組的基本單元。
數組元素也是一種變數, 其標識方法為數組名後跟一個下標。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。
如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。在C語言中只能逐個地使用下標變數, 而不能一次引用整個數組。
㈩ 請問c語言的數組是什麼
所謂數組,是有序的元素序列。[1]若將有限個類型相同的變數的集合命名,那麼這個名稱為數組名。組成數組的各個變數稱為數組的分量,也稱為數組的元素,有時也稱為下標變數。用於區分數組的各個元素的數字編號稱為下標。數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。[1]這些無序排列的同類數據元素的集合稱為數組。