初学c,请问:anytype *p_str, p_str++与 *p_str++有啥不同呢?
时间:2010-08-13
来源:互联网
在一段小代码里面更换二者结果一样。
- #include "stdio.h"
-
- main() {
-
- char *p_str = "just to see if it works";
-
- for(;*p_str != '\0'; p_str++ )
- printf("%c\n",*p_str);
-
- return 0;
- }
- main() {
-
- char *p_str = "just to see if it works";
-
- for(;*p_str != '\0'; *p_str++ )
- printf("%c\n",*p_str);
-
- return 0;
作者: cu养猪小能手 发布时间: 2010-08-13
作者: evaspring 发布时间: 2010-08-13
就算不考虑优先级的问题。
*ptr++ 因为++返回的值还是原来的*ptr
*(ptr++)因为返回的ptr的地址,所以取值还是相同的。
作者: evaspring 发布时间: 2010-08-13
p++ 的值是一个地址
*p++的值是从这个地址存储的东西。
作者: pandaiam 发布时间: 2010-08-13
在for里面把p_str改成*p_str结果是一样的
作者: cu养猪小能手 发布时间: 2010-08-13
嗯,这个我也知道,只是因为在上面两段代码的for的第三个分号前 p_str 和 *p_str效果一样,感到不解
作者: cu养猪小能手 发布时间: 2010-08-13
for循环里用到的只是 指针的移动,并没有用到指针具体指向的值,*p_str++虽然有取值,但是作为for语句的第三个表达式,其表达式的结果是p_str指向的值,但循环中没用到这个值。就是这样的。。。
作者: liuyuanyang 发布时间: 2010-08-13
就算不考虑优先级的问题。
*ptr++ 因为++返回的值还是原来的*ptr
*(ptr++)因为返回的ptr的地址,所以取值还是相同的。
回复 evaspring
这个 *ptr++返回的不是原来的 *ptr了呃。。。如果 char *ptr = "just do it"; 经过若干个 *ptr++后,printf("%s",ptr)打印出来的就不再是 just do it 了。
作者: cu养猪小能手 发布时间: 2010-08-13
作者: pandaiam 发布时间: 2010-08-13
谢谢啦,应该是这样了。怪不得有个这样的提示:
test.c:13:1: 警告:返回类型默认为‘int’
test.c: 在函数‘main’中:
test.c:17:25: 警告:计算出的值未被使用
作者: cu养猪小能手 发布时间: 2010-08-13
pandaiam 发表于 2010-08-13 23:06
嗯,谢谢了。
作者: cu养猪小能手 发布时间: 2010-08-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28