免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: chenzhanyiczy
打印 上一主题 下一主题

结构体问题,有点糊涂 [复制链接]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
11 [报告]
发表于 2009-04-02 11:20 |只看该作者
原帖由 思一克 于 2009-4-2 10:50 发表
struct XXXXX a;
int a;
是一样的. 你可以认为INT是一个固有的struct.


故 为什么 int a的a是常量指针,而struct XXXXX a 的a不是?

论坛徽章:
0
12 [报告]
发表于 2009-04-02 11:36 |只看该作者

回复 #4 chenzhanyiczy 的帖子

不好意思。。。是常量指针,不过在传递参数的时候,数组名会“堕落”为一个普通的指针。

论坛徽章:
0
13 [报告]
发表于 2009-04-02 11:50 |只看该作者
谁告诉你的int a的a 是常量指针?
不是. a是一个名字.
&a是指针. 如果全局定义, 就是常量指针


原帖由 chenzhanyiczy 于 2009-4-2 11:20 发表


故 为什么 int a的a是常量指针,而struct XXXXX a 的a不是?

论坛徽章:
0
14 [报告]
发表于 2009-04-02 11:56 |只看该作者
原帖由 chenzhanyiczy 于 2009-4-2 10:16 发表
struct a
{
  char pp[20];
  char cc[20];
  int bb;
} stest;

char temp[20];

temp数组名代表常量指针,stest代表什么?记忆中好像也是代表常量指针,指向pp[0]的地址

但好像又不是,比如: mems ...


stest 只是一个变量名而已。

temp 也只是个数组名称而已,可以当做地址(指针)用。但是别太当真,你来个temp+1 看看!!!哈哈

常规用法和特殊用法应该区分开!

个人看法!

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
15 [报告]
发表于 2009-04-02 12:06 |只看该作者
原帖由 chenzhanyiczy 于 2009-4-2 11:20 发表


故 为什么 int a的a是常量指针,而struct XXXXX a 的a不是?

原来你的记忆是这样的啊。。赶紧更正吧。。

论坛徽章:
0
16 [报告]
发表于 2009-04-02 12:08 |只看该作者

回复 #14 bladmin 的帖子

temp+1没有问题的。。。。temp++不行。。。

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
17 [报告]
发表于 2009-04-02 12:34 |只看该作者
原帖由 yangsf5 于 2009-4-2 12:06 发表

原来你的记忆是这样的啊。。赶紧更正吧。。


确实犯傻了,怎么会int a 的a是常量指针呢? 哎。。。。,脑子有问题了

论坛徽章:
0
18 [报告]
发表于 2009-04-02 12:45 |只看该作者
原帖由 chenzhanyiczy 于 2009-4-2 10:16 发表
struct a
{
  char pp[20];
  char cc[20];
  int bb;
} stest;

char temp[20];

temp数组名代表常量指针,stest代表什么?记忆中好像也是代表常量指针,指向pp[0]的地址

但好像又不是,比如: mems ...


首先说一下temp,他是一个常量指针。就像一个常数一样:temp+1就是temp[1]的地址,即&temp[1].
temp++ 当然不可以!我们都知道 10++ 不可以!!!但是 10+1 可以。我们在操作时一定要把temp
或 temp+1 ......temp+19  当作一个常数操作就对了。
再定义一个指针,以下操作将会让我们更明白:
char *t;
t = temp; //temp的首地址
t = temp+1 //temp[1]的地址
......
以此类推就可以了。

这样的情况与以下简单的程序相似:
int i;
i = 10;
i = 10+1;
只不过区别在于:一个是对指针操作,另一个是对常数操作。

在说一下stest,他是一个变量。结构体类型的的变量。它的地址是&stest.   &stest确实与pp[0]的地址相同。
stest是一个变量,我们就按照变量的用法使用就好了。

论坛徽章:
0
19 [报告]
发表于 2009-04-02 15:09 |只看该作者
就是一个变量名而已

论坛徽章:
0
20 [报告]
发表于 2009-04-02 15:48 |只看该作者
可以理解为类似与常量指针的东西,但并不是常量指针,指针是需要占用内存空间的,而数组名只是一个符号而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP