C语言按值传递、按址传递
来源:互联网 发布:js null的valueof 编辑:程序博客网 时间:2024/05/16 19:54
- 按值传递:是把实参的值赋值给行参,相当于copy。那么对行参的修改,不会影响实参的值 。
- 按址传递: 是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都 指向同一个对象,因此对形参的修改会影响到实参。
#include <stdio.h>
#include <string.h>void malloc_memory (char *ptr , int size)
{
ptr = malloc(size);//传参过来ptr的值为NULL,然后malloc()重新给ptr分配内存,但是不改变main函数中ptr的值。
}
int main(int argc ,char **argv)
{
char *ptr = NULL ;
malloc_memory(ptr , 10);
strcpy(ptr , "hello");// 这里 ptr的值仍为NULL,不能往里写任何东西
printf("ptr: %s\n" , ptr);
return 0;
}
运行结果: segmentation fault (core dumped) //段错误
解决办法如下:
修改程序(2种方法):
1,利用指针函数返回一个地址
声明函数: void *malloc_memory2(int size){
return malloc(size);
}
在main函数里,char *ptr2 = NULL;
prt2 = malloc_memory2(10);//操作地址来控制ptr2
....
2,若坚持利用参数
声明函数 void malloc_memory(char **ptr , int size);
{
*ptr = malloc(size);
}
在main函数里
char *ptr3 = NULL;
malloc_memory3(&ptr3 , 10);//按址传递。把ptr3的地址传过去,直接对ptr3内存进行赋值。
阅读全文
0 0
- C语言按值传递、按址传递
- C语言 值传递与址传递
- C语言 值传递与址传递
- C语言再学习 -- 值传递,址传递,引用传递
- c语言按值传递的机制
- C语言:值传递
- 初学C语言中(值)传递和(址)传递
- C语言地址传递与值传递
- C语言指针传递与值传递
- C语言函数传递与值传递
- C语言值传递与地址传递
- c语言 值传递、地址传递、引用传递
- c语言值传递,地址传递,引用传递
- c语言值传递,地址传递,引用传递
- C语言值传递 地址传递 引用传递
- c语言值传递,地址传递,引用传递
- C语言的值传递、地址传递、引用传递
- C语言参数传递----值传递与地址传递
- C++非递归的前中后序遍历实现
- 深度学习的八大开源框架
- Nginx服务器的安装部署和框架简介
- 深度学习
- Python基础(十)- random
- C语言按值传递、按址传递
- ActiveMQ学习(二)
- day01
- UVa156
- 程序员的成长阶梯
- 关于单位办公网络稳定性和健壮性故障的分析和处理以及思考
- 对单表亿级数据的简单测试
- ASP.NET MVC 此安装不支持该项目类型解决方法
- 用cmd命令生成项目webservice客户端