1、通过函数名找到入口,函数名是指针常量,保存函数地址。
2、给形参分配空间。
当只读(只使用不修改)实参变量时,传实参变量名;
当写(既使用也修改)实参变量对应内存空间的值时,传实参变量对应空间的地址。
fun1(char*num)
num++;
char*ptr = “hello world”;
fun1(ptr);
输出:hello world,
表示修改不了,传的是实参变量名,只可使用不可修改
#include <stdio.h>
void get_mem(char *ptr)
{
ptr = (char*)malloc(sizeof(char) * 100);
}
int main()
{
char*ptr;
get_mem(ptr);
strcpy(ptr,"hello world");
printf("ptr = %s\n",ptr);
return 0;
}
运行结果:段错误,因为利用函数分配空间没有成功。
在这个程序里,函数实参为变量名,是只读,无法修改,所以空间分配失败,段错误。
要修改的话
#include <stdio.h>
void get_mem(char **ptr)
{
*ptr = (char*)malloc(sizeof(char) * 100);
}
int main()
{
char*ptr;
get_mem(&ptr);
strcpy(ptr,"hello world");
printf("ptr = %s\n",ptr);
return 0;
}
运行结果:ptr = hello world
void fun2(char **ptr)
{(*ptr)++;
}
char *ptr = “hello world”;
fun 2(&ptr);
输出:ello world
表示可以修改,传的是实参变量对应空间的地址
4、执行函数体语句。
5、返回并释放内存空间。