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; //使生成的每一个数赋值给相应的指针变量所指向的地址
    }
}

猜你喜欢

转载自blog.csdn.net/Bennett2251/article/details/78300298