关于函数实参传递结构体变量的思考
来源:互联网 发布:雪梨淘宝店衣服怎么样 编辑:程序博客网 时间:2024/06/03 15:27
main.c测试代码如下:
#include <stdio.h>
struct aaa
{
char b[10];
int t;
float q;
};
struct aaa tt = {"aaaaaaaaa", 2, 2.2};
void fun(struct aaa c)
{
printf("+++++0x%08x, 0x%08x, 0x%08x, 0x%08x\n", &tt, tt.b, &tt.t, &tt.q);
printf("+++++0x%08x, 0x%08x, 0x%08x, 0x%08x\n", &c, c.b, &c.t, &c.q);
c.b[0] = 'c';
}
void func(struct aaa *c)
{
printf("+++++0x%08x, 0x%08x, 0x%08x, 0x%08x\n", &tt, tt.b, &tt.t, &tt.q);
printf("+++++0x%08x, 0x%08x, 0x%08x, 0x%08x\n", c, c->b, &c->t, &c->q);
c->b[0] = 'c';
}
int main()
{
printf("------%s\n", tt.b);
fun(tt);
printf("------%s\n", tt.b);
func(&tt);
printf("------%s\n", tt.b);
}
打印如下:
------aaaaaaaaa
+++++0x0804a014, 0x0804a014, 0x0804a020, 0x0804a024
+++++0xbfcd2510, 0xbfcd2510, 0xbfcd251c, 0xbfcd2520
------aaaaaaaaa
+++++0x0804a014, 0x0804a014, 0x0804a020, 0x0804a024
+++++0x0804a014, 0x0804a014, 0x0804a020, 0x0804a024
------caaaaaaaa
总结如下:
向函数传递结构体变量(不是结构体变量的地址)时,是复制了整个结构体到函数的栈内存中。
0 0
- 关于函数实参传递结构体变量的思考
- C-关于结构体变量和结构体指针变量函数传递值得问题
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- #1关于函数参数变量的思考
- 关于结构体的思考
- 函数中实参到形参的传递
- 函数中实参到形参的传递
- 函数中实参到形参的传递
- 【代码】结构体做函数参数,实现形参向实参传递值
- 关于inline函数,可以作为函数参数传递的思考
- 关于结构体中变量空间占用问题思考
- 参数传递---形参改变实参指针变量的值
- 关于结构的思考
- 关于C语言结构体成员变量偏移的一点思考
- 关于函数调用中参数传递的一些思考
- [C++] 关于函数的默认实参
- 关于调用函数的实参问题
- 函数变量的传递
- 使用数组实现乘法
- Java 设计模式
- bat批处理编程实例(1)
- js获取数组前n项的和
- CS231n Assignment1--Q4
- 关于函数实参传递结构体变量的思考
- linux(ubuntu)下获取 ms 毫秒级别 时间
- 迷宫求解C/C++
- 迭代工具(一)——按图幅框号批量裁剪影像
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 斐波那契 解题报告
- [未完]Gson处理json资源帖
- uboot功能分析与patch
- spark streaming 多表查询运行日志