十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
你可以用動(dòng)態(tài)分配內(nèi)存的方法,
創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站制作、網(wǎng)站建設(shè),重慶小程序開(kāi)發(fā)公司,網(wǎng)頁(yè)設(shè)計(jì)制作,手機(jī)網(wǎng)站制作設(shè)計(jì),成都營(yíng)銷網(wǎng)站建設(shè)幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。
比如你要建立一個(gè)字符串?dāng)?shù)組:
char *str;
str=(char *)malloc(n);
n是變量,可以在確定了變量的值后再用以上代碼分配內(nèi)存,
而str字符串可以以一般數(shù)組的用法使用,比如
*str="hello";的話
str[1]='l';
最后別忘了釋放內(nèi)存
free(str);
方法
有2
將該數(shù)組定義為全局變量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.將該數(shù)組作為函數(shù)參數(shù)傳遞到自定義函數(shù)里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
C語(yǔ)言支持一維數(shù)組和多維數(shù)組。如果一個(gè)數(shù)組的所有元素都不是數(shù)組,那么該數(shù)組稱為一維數(shù)組。
在C語(yǔ)言中使用數(shù)組必須先進(jìn)行定義,一維數(shù)組的定義方式為:類型說(shuō)明符; 數(shù)組名 ;[常量表達(dá)式]。
其中,類型說(shuō)明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符,方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長(zhǎng)度。例如:
int a[10]; ?/* 說(shuō)明整型數(shù)組a,有10個(gè)元素 */
float b[10], c[20]; ?/* 說(shuō)明實(shí)型數(shù)組b,有10個(gè)元素,實(shí)型數(shù)組c,有20個(gè)元素 */
char ch[20]; ?/* 說(shuō)明字符數(shù)組ch,有20個(gè)元素 */
對(duì)于數(shù)組類型說(shuō)明應(yīng)注意以下幾點(diǎn):
1、數(shù)組的類型實(shí)際上是指數(shù)組元素的取值類型。對(duì)于同一個(gè)數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。
2、數(shù)組名的書(shū)寫(xiě)規(guī)則應(yīng)符合標(biāo)識(shí)符的書(shū)寫(xiě)規(guī)定。
3、數(shù)組名不能與其它變量名相同。例如:
int a;
float a[10];
是錯(cuò)誤的。
4、方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),如a[5]表示數(shù)組a有5個(gè)元素。但是其下標(biāo)從0開(kāi)始計(jì)算。因此5個(gè)元素分別為a[0], a[1], a[2], a[3], a[4]。
5、不能在方括號(hào)中用變量來(lái)表示元素的個(gè)數(shù),但是可以是符號(hào)常數(shù)或常量表達(dá)式。例如:
#define FD 5
// ...
int a[3+2],b[7+FD];
是合法的。但是下述說(shuō)明方式是錯(cuò)誤的。
int n=5;
int a[n];
6、允許在同一個(gè)類型說(shuō)明中,說(shuō)明多個(gè)數(shù)組和多個(gè)變量。例如:
int a,b,c,d,k1[10],k2[20];
擴(kuò)展資料:
C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器(單片機(jī)或稱MCU)以及超級(jí)電腦等作業(yè)平臺(tái)。
二十世紀(jì)八十年代,為了避免各開(kāi)發(fā)廠商用的C語(yǔ)言語(yǔ)法產(chǎn)生差異,由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。[1]目前2011年12月8日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電工委員會(huì)(IEC)發(fā)布的C11標(biāo)準(zhǔn)是C語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
C語(yǔ)言是一門面向過(guò)程的計(jì)算機(jī)編程語(yǔ)言,與C++,Java等面向?qū)ο蟮木幊陶Z(yǔ)言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
如果是非靜態(tài)的局部變量,那第二次調(diào)用時(shí),數(shù)組會(huì)被 ”清空“。
子函數(shù)中,聲明的非靜態(tài)局部變量、數(shù)組,使用的是函數(shù)棧空間。
在每次調(diào)用函數(shù)時(shí),都會(huì)新分配一塊兒??臻g給函數(shù)使用。
因此相當(dāng)于每次調(diào)用子函數(shù),子函數(shù)內(nèi)的局部變量都會(huì)被初始化~
函數(shù)不可以定義為數(shù)組,可以用函數(shù)指針來(lái)操作。
1.函數(shù)指針的數(shù)組定義方法:返回值類型( * 指針變量名[Number]) (形參列表)。例如:double add(double a,double b){};double sub(double a,double b){};double mul(double a,double b){};double div1(double a,double b){};double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數(shù)指針的數(shù)組定義2.函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。3.函數(shù)指針的聲明方法為:返回值類型( * 指針變量名) (形參列表);“返回值類型”說(shuō)明函數(shù)的返回類型,“( * 指針變量名)”中的括號(hào)不能省,括號(hào)改變了運(yùn)算符的優(yōu)先級(jí)。若省略整體則成為一個(gè)函數(shù)說(shuō)明,說(shuō)明了一個(gè)返回的數(shù)據(jù)類型是指針的函數(shù),后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例如:int func(int x); /* 聲明一個(gè)函數(shù) */int (*f) (int x); /* 聲明一個(gè)函數(shù)指針 */f = func; /* 將func函數(shù)的首地址賦給指針f */或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:f = func;賦值時(shí)函數(shù)func不帶括號(hào),也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過(guò)賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。例子:
#includestdio.hint max(int x,int y){return (xy? x:y);}int main(){ int (*ptr)(int, int); int a, b, c; ptr = max; scanf("%d%d", a, b); c = (*ptr)(a,b); printf("a=%d, b=%d, max=%d", a, b, c); return 0;}
C語(yǔ)言中,同變量一樣;數(shù)組也必須先定義后使用。
一維數(shù)組的定義形式:
類型標(biāo)識(shí)符? 數(shù)組名[常量表達(dá)式];例如int a[10]; ? 其中a為地址常量。
如變量的定義一樣,int a ;double a;float a等;數(shù)組的定義只是把后面的變量名改為數(shù)組名而已。
int a[10]就是定義了一個(gè)數(shù)組名為a的數(shù)組;此數(shù)組有10個(gè)元素。其中各元素從a[0]到a[9];并沒(méi)有a[10]元素。下面列舉一個(gè)。
擴(kuò)展資料
常量表達(dá)式可以包括字面常量和符號(hào)常量;但不能包含變量。例如對(duì)下面定義是錯(cuò)誤的
int n=5
int a[n]
可以修改為
#define N 5
int a[N]
其中對(duì)二維及多位數(shù)組定義可以類推
int? a[x][y][z][...]其中 x,y,z為數(shù)字。
參考資料
百度百科-C語(yǔ)言