1. 程式人生 > >C語言函式和主函式的呼叫

C語言函式和主函式的呼叫

在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; //使生成的每一個數賦值給相應的指標變數所指向的地址
    }
}