标题:C语言,结构变量有首地址吗
只看楼主
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
 问题点数:0 回复次数:5 
C语言,结构变量有首地址吗
struct student
{      
   long num;        
   char name[20];        
   char sex[10];      
   float score;
 };
struct student stu;
struct student *p;
 p=&stu;
//(*p).num   //实质就是STU.NUM吗
//(*p).num和p->num相同吗?很多人都说相同.但是我不理解.

//疑惑:我在一本C语言教程上是这么写的,(.)运算符号和(->)运算符合是等同的意思.
//如果是这样的话,p->num应该和p.num相同了.

//那么(*p).num和p.num
也相同了吗?肯定不是吧?
//最后一个问题是到低,(.)运算符号和(->)运算符合是相同的意思.
搜索更多相关主题的帖子: C语言 符号 long 
2011-05-26 13:55
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:0 
说白了,只有指针(p)后面可以跟->,变量名(stu)后面只能跟.,另外*p和stu是相等的(*p获取地址上存储的变量,就是stu,意思是(*p)==stu,p是一个地址)。

   唯实惟新 至诚致志
2011-05-26 14:01
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
(*p).num和p->num相同。因为结构操作符.要比指针运算符*有更高的优先级,所以需要个括号。由于经常要用到指向结构的指针,所以在C中专门设计了一个特殊的操作符----结构指针操作符->,这样表达p->num要比(*p).num清晰的多。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-26 14:31
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
另外,定义的结构并不产生内存分配,也就无所谓地址;而后面的声明的结构变量才会被编译器分配适当的内存空间,也即具有相应的内存地址。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-26 14:35
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
得分:0 
谢谢解释的很清楚
2011-05-26 14:52
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
得分:0 
以下是引用ansic在2011-5-26 14:35:08的发言:

另外,定义的结构并不产生内存分配,也就无所谓地址;而后面的声明的结构变量才会被编译器分配适当的内存空间,也即具有相应的内存地址。
经常说:“看不懂,帮顶。”,原来是个高人。

解释得很详细,不错,学习了。

[ 本帖最后由 gupiao175 于 2011-5-26 16:20 编辑 ]

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2011-05-26 16:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-341042-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.360267 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved