c/c++结构体与结构体指针
来源:互联网 发布:union all 不同数据库 编辑:程序博客网 时间:2024/06/14 02:39
一、定义结构体变量
举个具体的例子,如将在校学生的信息定义为一个结构体,信息内容包括学生的姓名(string)、学号(long)、年龄(int)等,就可以声明如下:
struct { char sName[10]; long sNo; int sAge; };
结构体本质是一种数据类型,和C语言的内置内型(char,int,long …)类似,我们可以用它来定义变量,如定义一个学生Jack就可以这样:
struct { char sName[10]; long sNo; int sAge; }Jack;
如还要再定义一个学生Rose:
struct { char sName[10]; long sNo; int sAge; }Rose;
我们就发现每次定义一个这样的结构体变量非常麻烦,每次都要将结构体类型声明完整写一遍,于是就引进了在struct关键字后面加上“结构标签”,例如上面的结构体就可声明为:
struct stuInfo{ char sName[10]; long sNo; int sAge; };
从此定义变量可以这样完成:
struct stuInfo Jack;struct stuInfo Rose;
如果你还嫌略为麻烦,C语言中还可以通过关键字typedef对类型重命名,这样我们可以将上面的结构体重新命一个名字,如叫sInfo:
typedef struct stuInfo sInfo;
定义变量将变得异常简单:
sInfo Jack; sInfo Rose;
将上面几步融合一起,就是我们通常所使用的定义结构体变量的方法:
先声明一个结构体:
typedef struct stuInfo{ char sName[10]; long sNo; int sAge; }sInfo;
再定义变量:
sInfo stu1, stu2;
二、结构体指针
1.结构体指针对结构体中元素的访问需要用“->”访问,而结构体变量用“.”访问相应的结构体元素。
2.作为函数的形参时,结构体指针作为形参时,函数体内对结构体内容的改变将返回,而变量作为参数时则不能传递返回。
测试:
#include<stdio.h>typedef struct stru{ int a; int b;}A;A var,*ptr; //定义结构体和结构体指针void fun1(A vvar);void fun2(A *pptr);int main(){ A ss={1,2}; //赋初值 var = ss; ptr = &ss; fun1(var); printf("after fun1:\n"); printf("var.a is %d\n",var.a); //a和b的值未改变 printf("var.b is %d\n\n",var.b); printf(".....................................\n\n"); fun2(&var); printf("after fun2:\n"); printf("var.a is %d\n",var.a); //a和b的值均改变 printf("var.b is %d\n\n",var.b); return 0;}void fun1(A vvar){printf("var.a is %d\n",vvar.a);printf("var.b is %d\n",vvar.b);vvar.a = 100;vvar.b = 200;}void fun2(A *pptr){printf("ptr->a is %d\n",pptr->a);printf("ptr->b is %d\n",pptr->b);pptr->a = 300;pptr->b = 400;}
结果:
参考:http://blog.csdn.net/hazir/article/details/7449779?locationNum=12&fps=1
阅读全文
0 0
- C语言指针-----指针与结构体
- C/C++:结构体指针
- C语言 指针与数组,结构体
- c语言结构体与指针
- c/c++结构体与结构体指针
- C语言 结构体与结构体指针用法总结
- c语言结构体指针
- C语言---结构体指针
- C-045.结构体指针
- 【C语言】结构体指针
- c指针和结构体
- C语言基础及指针⑦结构体与指针
- C语言 结构体的应用 查询结构体中的信息 结构体与指针操作
- C语言——结构体与指针引用&结构体数组与指针引用
- 【C】 结构体与结构体指针,->在C语言中的唯一用途
- C结构体中的函数指针与函数
- C结构体中的函数指针与函数
- C结构体中的函数指针与函数
- Codeforces 837 D Round Subset
- Activity生命周期实践
- Codeforces-837D Round Subset(dp)
- 图像标签(<img>)和源属性(Src)
- 基于状态机正则引擎学习(挖坑待填)
- c/c++结构体与结构体指针
- 【数论-莫比乌斯】bzoj 2301 莫比乌斯+容斥
- Trie(字典树)的Java实现
- Cocoapods安装中出现的问题解决
- Oracle总结
- 客户端和服务器编码问题
- hdu 6069 统计区间约数的个数 2017 Multi-University Training Contest
- javaweb Filter的使用方法以及配置xml文件
- Android的LocalSocket实现及SELinux权限设置.编译(应用层和native通信)