语法tips 3(结构体传参)
来源:互联网 发布:java多线程什么意思 编辑:程序博客网 时间:2024/06/18 09:06
1:如何让系统自动告知你数据类型:
假设有如下数据类型:
#define NUM_OF_SG (4)
#define SG_NUM (2)
struct Oop_Setting_Group_Unit
{
int act_sg_no;
float sg[NUM_OF_SG][SG_NUM];
};
int main()
{
struct Oop_Setting_Group_Unit max[2];
printf("%d \r\n",max); //明知max不是%的类型,尝试printf时,printf会报错并提示类型。
return 0;
编译时告警如下:}
test.c:12:10: warning: format ‘%d’ expects argument of type ‘int’,
but argument 1 has type ‘struct Oop_Setting_Group_Unit *’ [-Wformat=] printf("%d \r\n",max);
由此可知,max类型为“struct Oop_Setting_Group_Unit *”型,也可知max虽定义为结构体数组,但其实也就是结构体指针,而不是结构体数据组指针。
2:传递结构体数组参数:
#define NUM_OF_SG (4)
#define SG_NUM (2)
struct Oop_Setting_Group_Unit
{
int act_sg_no;
float sg[NUM_OF_SG][SG_NUM];
};
int fun(struct Oop_Setting_Group_Unit * dest)
{
printf("%f %f\r\n",dest[1].sg[1][1],dest[0].sg[2][2]);
return 0;
}
int main()
{
struct Oop_Setting_Group_Unit max[2];
max[1].sg[1][1] = 123.456;
max[0].sg[2][2] = 456.789;
fun(max); //直接传递max,为结构体指针
//但是该printf输出“36 72”,此时又将max作为了结构体数组实际大小。由此可见“C专家”上写的,数组名和指针有时相等有时不等!
printf("%d %d \r\n",sizeof(struct Oop_Setting_Group_Unit),sizeof(max));
return 0;
}
- 语法tips 3(结构体传参)
- C++语法小tips(未完待续)
- #Java基础语法#(3)控制结构
- **PHP** 语法(3)-控制结构
- (1)- 语法结构
- C++ 语法tips
- Gradle Tips#2-语法
- 语法tips 1
- 语法tips 2
- Gradle Tips#2-语法
- Gradle Tips#2-语法
- Linq 学习(3) 语法结构
- XML语法结构(学习)
- MySQL的一些基本语法(3)-查看表结构
- 语法结构
- 语法结构
- python(3)methods & tips~
- TensorFlow代码结构优化tips
- Linux常用命令-1---cd、ls、grep、find、cp
- Android Material Design之Toolbar与Palette实践
- libodb编译过程
- printf在终端输出时改变颜色
- 复制服务器的图片并且重命名
- 语法tips 3(结构体传参)
- LibEvent中文帮助文档-第6章【创建Event_base】
- 麻麻我也会用nodejs写爬虫啦!!!
- Deep Learning(深度学习)
- python数据类型-元组(tuple)
- 魔镜VR,如何使UI在视野中左右静止,上下旋转
- RefreshLayout让你半小时以内完成一个列表界面
- 删除表的字段时,ID值同时也能删除
- 对于C语言中int main(int argc,char **argv)的理解