结构体传参时,传地址而不是传值。理由和实例

简介: 结构体传参时,传地址而不是传值。理由和实例
//结构体传参2种:传地址比传值好,因为:
//struct S
//{
//    int data[1000];
//    int num;
//};
//struct S s = { {1,2,3,4},1000 };
//结构体传参----传值,值如果4000bit 需要创建个4004个bit的新地址,占空间太大,
//而且传值只是临时拷贝,无法修改原数值
//void print1(struct S s)
//{
//    printf("%d\n", s.num);
//}
结构体地址传参----指针变量接收,只占4/8bit,不大,
而且传址可以修改原数值(const锁死之后就不能改原数据)
//void print1(struct S*ps)
//{
//    printf("%d\n", ps->num);
//}
//int main()
//{
//    print(s);//传结构体
//    print(&s);//传地址
//    return 0;
//}

5e693e10eab946b48915c73b7b070533.png

相关文章
|
XML Java 数据库连接
Mabtis传值方式
Mabtis传值方式
403 0
|
4月前
链表指针的传参,传值和传地址
本文讨论了链表操作中指针传参的问题,特别是指针的传值与传地址的区别,并提供了修正代码,以确保链表插入操作能正确地修改指针指向的地址。
29 1
链表指针的传参,传值和传地址
|
4月前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
372 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
5月前
|
存储 前端开发 JavaScript
前端基础(十一)_函数声明及调用、函数的形参与实参、arguments参数、函数的参数类型、函数中的问题
本文介绍了JavaScript中函数的声明及调用、形参与实参的概念、arguments对象的使用、函数参数的类型以及函数中this的作用。通过示例代码详细解释了函数如何接收参数、如何处理参数个数不匹配的情况,以及函数在不同上下文中this的指向。
55 1
数据交互,前后端数据请求,axios请求,对象结构的使用,E6的使用,结构赋值是什么?函数形参的obj如何,函数形参的obj就改成对象结构接收传入的数据对象
数据交互,前后端数据请求,axios请求,对象结构的使用,E6的使用,结构赋值是什么?函数形参的obj如何,函数形参的obj就改成对象结构接收传入的数据对象
|
9月前
|
编译器 C++
函数指针和回调函数对函数取地址和直接使用函数名的差距
函数指针和回调函数对函数取地址和直接使用函数名的差距
197 0
|
9月前
|
存储
char**传参,获取函数内申请的字符串,外部释放
char**传参,获取函数内申请的字符串,外部释放
117 0
|
存储 C语言 C++
【指针的进阶(1)】指针的类型、数组传参和指针传参
【指针的进阶(1)】指针的类型、数组传参和指针传参
89 0
|
存储
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
136 0
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数