C語言函式和主函式的呼叫
阿新 • • 發佈:2018-12-16
在C語言中主函式在呼叫子函式時,會產生相應的棧去存放呼叫子函式時的值,當呼叫完畢時,呼叫子函式所生成的棧則立即銷燬。主函式在呼叫子函式時如果為值傳遞時,則傳過去的引數並不影響主函式中引數的值,如果採用地址傳遞,則在子函式時會改變引數地址所指向的值。
Note:1、在子函式中生成一個數組想要通過返回引數(指標變數)傳回主函式時,實際上傳不過去。因為子函式生成的陣列在子函式所建立的棧中,當呼叫結束時,棧被銷燬,所建立的自然也被銷燬,故主函式得不到相應的值。
2、想要通過子函式生成20個隨機的數,可通過以下的方法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void random(int *a);
int main()
{
int *a,i;
a=(int *)malloc(sizeof(int)*20); //為整形指標變數開闢一個20個整形的空間
random(a); //通過地址傳遞生成隨機數
for(i=0;i<20;i++)
{
printf("%d\t",*(a+i));
}
return 0;
}
void random(int *a)
{
int i;
srand(time(NULL));
for(i=0;i<20;i++)
{
*(a+i)=10+rand()%41; //使生成的每一個數賦值給相應的指標變數所指向的地址
}
}