C语言关于指针的问题

2025-05-13 16:28:19
推荐回答(4个)
回答1:

这个是未定义行为,无解

这个地方涉及两个未定义行为

一个是自增运算的副作用发生时间,即运算符的求值顺序问题

另一个是函数调用约定的入栈顺序对参数的求值顺序的问题

两者在标准中都是未定义的

参见stackoverflow提问对类似代码解释

回答2:

*t指向的地址里的就是数字1的ascii码值 ++*t 就成为了2的ascii码值 此时*t就是指向2
所以两个输出都是2

回答3:

printf("%c, %c\n", *t,++*t);
此语句是先处理++*t操作,然后再输出,这时,s已经变成了2357
故输出2,2

回答4:

C语言_071_指针的定义和使用_上