c语言 调用函数过程
2016-11-19 22:06
197 查看
一、调用函数过程
1、通过函数名找到入口,函数名是指针常量,保存函数地址。
2、给形参分配空间。
3、传值:把实参变量对应内存空间的值传递给形参变量对应空间。
当只读(只使用不修改)实参变量时,传实参变量名;
当写(既使用也修改)实参变量对应内存空间的值时,传实参变量对应空间的地址。
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、返回并释放内存空间。
1、通过函数名找到入口,函数名是指针常量,保存函数地址。
2、给形参分配空间。
3、传值:把实参变量对应内存空间的值传递给形参变量对应空间。
当只读(只使用不修改)实参变量时,传实参变量名;
当写(既使用也修改)实参变量对应内存空间的值时,传实参变量对应空间的地址。
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、返回并释放内存空间。
相关文章推荐
- C语言中函数调用过程
- 深入理解C语言的函数调用过程
- C语言中函数的调用过程
- 从一个新手容易混淆的例子简单分析C语言中函数调用过程
- C语言,函数的调用过程(栈帧)
- C语言_函数调用过程(栈帧)
- 深入理解C语言的函数调用过程
- C语言 — 函数调用过程。
- 深入理解C语言的函数调用过程
- 深入理解C语言的函数调用过程
- C语言中的回调函数调用过程以及函数指针使用
- 关于C语言的函数调用过程和数组越界
- 深入理解C语言----函数调用过程浅析
- 分析linux下的进程地址空间,以及c语言的函数调用过程
- C语言中函数的调用过程(栈帧)具体解析
- 【C语言】函数调用过程解析(栈帧)
- 第05天C语言(03):函数的调用过程
- 深入理解C语言的函数调用过程
- 深入理解C语言的函数调用过程 【转】