c语言结构体问题求解释谢谢

[复制链接]
查看11 | 回复4 | 2013-3-13 14:33:00 | 显示全部楼层 |阅读模式
我想你的问题不是得不到5,3的结果,而是问怎么理解吧printf("%d,%d\n,(++p)->a,(p++)->a); 这个语句之前, p 指向 &str[1] 这个printf语句这样解释:(++p)->a
语句之前先处理指针 p,再p->a(p++)->a 先p->a,语句之后再处理 指针 pprintf 是 C语言,应该是 C规则的调用规范(即__cdecl),入口参数从右边开始处理直到最左边的参数,并且调用者来平衡堆栈。(你可以去参考一下C规范,pascal规范,stdcall,FastCall这些调用规范)。所以顺序是右边的p->a,++p, 左边的p->a, printf语句,p++...
回复

使用道具 举报

千问 | 2013-3-13 14:33:00 | 显示全部楼层
#includestruct s{
int a;
int*b;}*p,str[4]; main() {
int m=1,i;
for(i=0;i<4;i++)
{
str.a=m;
str.b=&str...
回复

使用道具 举报

千问 | 2013-3-13 14:33:00 | 显示全部楼层
struct s{ int a; int*b; }*p,str[4]; //定义一个结构体指针,元素为结构体的数组 main() { int m=1,i; for(i=0;i<4;i++) { str.a=m;//为数组中每个结构体的a赋值,分别为1,3,5,7str.b=&str.a; m=m+2; }...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行