C语言程序小疑问

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:09:30
main()
{int a=2,*p=&a,*q=&a;
*p++;
printf("%d%d\n",*p,*(q++));getch();
}

这个程序对不对,不对在哪?请详细说明.

我学了好久c,学到指针就动不了了
如果有兴趣希望交流,
楼上的那是win1.9的显示
不起什么作用

不对啊~~!

*(q++)这就不对啊,a又不是数组,怎么好这样用啊~~!

什么不对,,*(q++)没有指向下一个的目标啊~~!

不对!

p中存的是a的地址
p++后p中存的内容将不确定

指针的用法你可以将它看做一个堆ZAN(我手机里没这个字对不起)*P指向a就是2可视为数组就一个元素,再*p++就会出现数组越界,明白了吧,在你接触JAVA的时候有异常处理语句,就简单了,别谢了都兄弟

错在这儿

*p++;
改成:
(*p)++;

*p++按照运算符的优先级,等价于*(p++),
p++指向了一个未初始化的地址,所以取*操作是存在风险的

(*p)++才是将当前p指向的地址里的值(也就是a的值)进行加1处理

你最后个“getch()”貌似没啥用 而且应该是getchar()