请问一个关于指针自增自减的问题

musictornado 2002-10-03 09:09:07
请看下面的程序:
void main()
{typedef strct {int x,int y} number[]={{2,3},{4,5},{6,7}};
number *p=(number+1);
printf("%d",++p-->x);
printf("%d",p++-->x);
}
...全文
142 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangchanglu 2002-10-04
  • 打赏
  • 举报
回复
你太马虎了吧 以后不要了 那不是浪费大家的时间吗
musictornado 2002-10-04
  • 打赏
  • 举报
回复
一年,有什么问题吗?
请看我的题好吗?希望支持!!!
Aofa_lee 2002-10-04
  • 打赏
  • 举报
回复
你学编程学了多旧啊?
musictornado 2002-10-04
  • 打赏
  • 举报
回复
up
musictornado 2002-10-04
  • 打赏
  • 举报
回复
up
musictornado 2002-10-04
  • 打赏
  • 举报
回复
sorry,前一题有一点错误,请看下面的另一题,这是99年的初程试题:
#include <stdio.h>

main()

{ struct num{ int x; int y;}

sa[] = {{2, 32}, {8, 16}, {4, 48};

struct num *p = sa+1;

int x;

x = p->y / sa[0].x * ++p->x;

printf(″x = %d p->x = %d\n″, x, p->x);

}

程序1.1的输出结果是____
xiaoluoli 2002-10-04
  • 打赏
  • 举报
回复
void main()
{typedef strct {int x,int y} number[]={{2,3},{4,5},{6,7}};
//typedef struct {int x,int y} number[]={{2,3},{4,5},{6,7}};
//这里定义了结构提数组并赋了初值,number 是一个数组名。

number *p=(number+1);
//定义了一个结构提数组p,并把number+1赋给p
printf("%d",++p-->x);
printf("%d",p++-->x);
}
stone112979 2002-10-04
  • 打赏
  • 举报
回复
up
stonejin 2002-10-04
  • 打赏
  • 举报
回复
我想也是你打错了,
typedef struct {int x,int y} Number;
sonwman 2002-10-04
  • 打赏
  • 举报
回复
程序的功能我看不出来,但我可以肯定P的值没有变化。
指针有它的变化规则。
caitou123 2002-10-04
  • 打赏
  • 举报
回复
哦,打错了,应是这样:
typedef struct {int x;
int y;} Number ;
caitou123 2002-10-04
  • 打赏
  • 举报
回复
typedef strct {int x,int y} number[]={{2,3},{4,5},{6,7}};
what's this?
就是错误,要用的话只能这样:
typedef strct {int x,int y} Number;
Number number[]={{2,3},{4,5},{6,7}};
Number *p=number+1;
...
输出是一样的,都是6。

lw_yx 2002-10-03
  • 打赏
  • 举报
回复
本来就难学了,还非得往牛角里钻,何苦!
lw_yx 2002-10-03
  • 打赏
  • 举报
回复
不要写些莫名的程序,自己跟自己过不去?
Zark 2002-10-03
  • 打赏
  • 举报
回复
number的用法是可以的,number 是变量名,结构名是匿名的。
number[]中存放着三个结构体。
p指向第二个即{4,5}

(++p)->x; p指向第三个,所以是6
p++->x, p仍指向第三个,所以还是6,但做完后,p指向第四个结构体,其值就没有什么意义了。
WuYL7812 2002-10-03
  • 打赏
  • 举报
回复
不应该这样浪费别人的时间。
写这些代码的人有病。

Keanu_Rocky 2002-10-03
  • 打赏
  • 举报
回复
typedef strct {int x,int y} number[]={{2,3},{4,5},{6,7}};
what's this?
我个人觉得,这样做是不是有错误啊?
number是变量名还是类型名??
hehe214 2002-10-03
  • 打赏
  • 举报
回复
看到什么了?
waterstony 2002-10-03
  • 打赏
  • 举报
回复
我看到了。
bigant888 2002-10-03
  • 打赏
  • 举报
回复
看不明白,关注~~
加载更多回复(1)
内容概要:本文档是一份关于C语言自增自减运算符的专项测试卷,旨在考察学生对自增(++)和自减(--)运算符的理解及其在不同场景下的应用。试卷分为四个部分:选择题、填空题、编程题和综合题。选择题主要考察对自增自减运算符在表达式中的执行顺序和结果的理解,尤其关注未定义行为的情况。填空题则进一步加深对这些运算符行为的理解,包括在复杂表达式中的应用。编程题要求学生编写简单的程序来实现特定功能,如使用自增运算符输出奇数序列、利用指针遍历数组等。综合题则结合了数组和指针的操作,要求学生编写完整的程序并分析复杂表达式的执行过程。 适合人群:具备一定C语言基础的学习者,尤其是正在学习或复习自增自减运算符的学生,以及希望巩固相关知识的程序员。 使用场景及目标:①帮助学习者掌握自增自减运算符在不同情况下的行为,特别是未定义行为的识别;②通过编程练习提高实际编码能力,理解运算符在实际项目中的应用;③培养对C语言底层机制的理解,为后续深入学习打下坚实基础。 阅读建议:由于部分题目涉及未定义行为,学习过程中应特别注意这些情况的实际影响,并尽量避免在实际编程中使用可能导致未定义行为的写法。建议在学习时结合具体的编程环境进行调试,以更好地理解每个表达式的执行过程。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧