首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
c语言中结构体指针
时间:
2015-07-29 23:04:26
阅读:
142
评论:
0
收藏:
0
[点我收藏+]
标签:
1、指向结构体的指针变量:
C 语言中->是一个整体,它是用于指向结构体,假设我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到指向运算符“->”.
举例说明:
struct SunLL
{
int a;
int b;
int c;
};
struct SunLL * p; //定义结构体指针
struct SunLL A = {1,2,3}; //定义一个SunLL类型的变量A
int x; //定义一个变量x
p = &A ; //让p指向A
x = p->a; //等价于 x=(*p).a (*p)表示p指向的结构体变量
//这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x
//由于此时p指向A,因而 p->a == A.a,也就是1
2、指向结构体数组的指针变量:
指向结构体的指针变量也可以指向结构体数组及其元素。
如果程序如下:
struct SunLL *p,sun[3];
p = sun;
如果假定sun[0]的地址是1000,指针变量p指向结构体数组sun的首地址,由于size of(struct SunLL)的值是6,每个结构体元素占内存空间6个字节,因此p+1指向地址1006,p+2指向地址1012.
使用指针变量指向结构体变量或结构体数组时,应注意运算符的优先级,在c语言中"()" "[ ]" "->" "."四个优先级相同,具有最高的优先级,其次是”*“ ”++“ ”--“ ”&“四个相同优先级的运算符。如:++P->a的表达式等价于++(p->a)
(++p)->a先计算++p,p指向sun[1];
P++->a;则表达式等价于(p++)->a;
p->a++的表达式等价于(p->a)++;
3、结构体作为函数参数与结构体指针作为函数参数
举例1
struct st
{
int a;
char b;
};
fun(struct st bc)
{
bc.a+=5;
bc.b=‘A‘;
printf("%d,%c\n",bc.a,bc.b);
}
main()
{
struct st bl;
bl.a=3;
bl.b="c";
fun(bl);
printf("%d,%c\n",bl.a,bl.b);
}
运行结果为:8,A 3,c
举例2:
struct st
{
int a;
char b;
};
fun(struct st *bp)
{
bp->a+=5;
bp->b=‘A‘;
printf("%d,%c\n",bc.a,bc.b);
}
main()
{
struct st bl;
bl.a=3;
bl.b="c";
fun(&bl);
printf("%d,%c\n",bl.a,bl.b);
}
运行结果为:8,A 8,A
总结:
将结构体变量作为函数参数,是将实参值传递给形参,属于值传递。将结构体所有参数传递给形参使用,但本身的值不会改变。将指向结构体变量的指针作为实参进行传递时,是将结构体变量的地址传递给形参,属于地址传递,会改变实际结构体变量的成员值的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
c语言中结构体指针
标签:
原文地址:http://blog.csdn.net/frank_jb/article/details/47134933
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!