C语言之struct参数传递与结构匹配
来源:互联网 发布:java中random的用法 编辑:程序博客网 时间:2024/06/06 16:28
1、结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同:
首先结构体可以在一个结构中声明不同的数据类型,;
第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称可看作常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
由于结构体本身就是自定义的数据类型,定义结构体变量的方法和定义普通变量的方法一样。
结构体,同样是可以定义指针的,那么结构体指针就叫做结构指针。
2、结构体作函数参数可以整个结构体作函数参数。
整个结构体作函数参数,必须保证实参与形参的类型相同,实际上是将实参结构体成员值对应传递给形参结构体成员。数组传递的是首地址。
虽然结构体能整体作函数参数,但要将全部成员值一个一个传递,开销比较大。
结构体数组看上去与一般数组类似,也是一种数据类型,一组数据。
但结构体作为参数,是一组数据的collection,因此,不同于数组(只传递首地址,蜕化成指针),而是将所有成员变量都复制。因此,一般使用指针较好。
3、struct不是进行类型匹配,而是结构匹配。
1 #include<stdio.h>
2
3 struct
4 {
5 char a;
6 int b;
7 } Sa = {'a',1};
8 struct
9 {
10 char a;
11 int b;
12 } Sb = Sa;
13
14 int main()
15 {
16 1;
17 return 0;
18 }
编译结果:
t.c:12: error: invalid initializer
虽然两个struct看上去类似,由于上一篇文章提到的可能存储分配不同,导致结构不匹配,不能赋值。
可以进行如下改进:
struct stru
{
char a;
int b;
};
struct stru Sa = {'a',1};
struct stru Sb = Sa;
这样,两个结构体变量结构匹配了。
- C语言之struct参数传递与结构匹配
- C语言之struct参数传递与结构匹配
- c语言之结构(struct)
- C语言学习之结构体struct
- C语言之结构体struct
- C语言之struct结构体
- C语言参数传递----值传递与地址传递
- 菜鸟学习-C语言函数参数传递详解-结构体与数组
- C语言函数参数传递之痛
- C&C++语言之可变参数传递
- C语言函数参数传递之痛
- C语言函数参数传递之痛
- C语言之传递可变参数
- C语言结构体(struct)
- c语言结构体struct
- C语言结构体struct
- c语言struct结构体
- c语言之struct
- vs2005使用技巧(2)
- 10个iPhone开发网站、论坛、博客
- 线程池(Thread Pool)
- SQL操作全集
- 高焕堂Android應用框架原理與程式設計代码补遗(一)
- C语言之struct参数传递与结构匹配
- 网络名言
- The module ... was loaded but the call to DllRegisterServer failed with error code 0x80070005
- Game2.0会不会为程序员们带来美好的钱途
- 配置Ajax--开始
- Internet Explorer Toolbar (Deskband) Tutorial :IE 工具条 编程手册
- 【经验交流】Cookie的概念、作用及保存、清除Cookies的利弊
- ACE编译总结
- 每天学一点flash(57)随机抽取