如果是非靜態的局部變量,那第二次調用時,數組會被 ”清空“。
創新互聯成立于2013年,我們提供高端網站建設公司、成都網站制作、成都網站設計、網站定制、網絡營銷推廣、成都小程序開發、微信公眾號開發、seo優化排名服務,提供專業營銷思路、內容策劃、視覺設計、程序開發來完成項目落地,為砂巖浮雕企業提供源源不斷的流量和訂單咨詢。
子函數中,聲明的非靜態局部變量、數組,使用的是函數棧空間。
在每次調用函數時,都會新分配一塊兒棧空間給函數使用。
因此相當于每次調用子函數,子函數內的局部變量都會被初始化~
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為數字。
參考資料
百度百科-C語言
函數不可以定義為數組,可以用函數指針來操作。
1.函數指針的數組定義方法:返回值類型( * 指針變量名[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};//函數指針的數組定義。
2.函數指針是指向函數的指針變量。 因而“函數指針”本身首先應是指針變量,只不過該指針變量指向函數。這正如用指針變量可指向整型變量、字符型、數組一樣,這里是指向函數。
C在編譯時,每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址。有了指向函數的指針變量后,可用該指針變量調用函數。
擴展資料:
指針函數和函數指針的區別:
這兩個概念都是簡稱,指針函數是指返回值是指針的函數,即本質是一個函數。我們知道函數都有返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。其定義格式如下所示:返回類型標識符*函數名稱。
返回類型可以是任何基本類型和復合類型。返回指針的函數的用途十分廣泛。事實上,每一個函數,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當于一個指針。比如函數返回一個整型值,實際上也相當于返回一個指針變量的值,不過這時的變量是函數本身而已,而整個函數相當于一個“變量”。
參考資料:百度百科 -?函數指針
在子函數申請二維數組,主函數使用,可以用動態申請。
方法不止一種,我這里用指針的指針實現二維數組。
二維數組除了行列,本身地址也是連續的,從第一行第一列的元素地址++,可以取出所有元素。所以我這里先申請了完整的連續地址。
#includestdio.h
#includemalloc.h
int?**?sr(void)
{
int?i,j;
int?*memory=(int?*)malloc(sizeof(int)*9);//申請完整的連續內存地址3*3
int?**arr=(int?**)malloc(sizeof(int*)*3);//申請二維數組行指針數組(也就是二維數組)
if(!memory?||?!arr){
printf("內存申請錯誤!\n");return?NULL;}
for(i=0,j=0;i9;i+=3)//將連續地址按列數,取出每行首地址,賦值給二維數組元素
arr[j++]=memory[i];
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",arr[i][j]);
return?arr;
}
int?main(void)
{
int?i,j,**arr=sr();
if(!arr)
return?1;
printf("---主函數調用子函數定義的二維數組---\n");
for(i=0;i3;i++,printf("\n"))
for(j=0;j3;j++)
printf("%d?",arr[i][j]);
printf("\n---實現二維數組地址連續性---\n");
int?*p=arr[0][0];
while(p=arr[2][2])
printf("%d?",*p++);
return?0;
}
名稱欄目:c語言子函數定義數組 c語言函數中數組的使用
分享地址:http://vcdvsql.cn/article24/hpipce.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站改版、企業網站制作、品牌網站建設、網站設計公司、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯