初学指针遇到的问题

abaloon 2012-10-27 01:09:57
#include<stdio.h>
#include <conio.h>
main(){
int array[20];
int *ptr=array;
int i;
for(i=0;i<20;i++)
array[i]=i;
for(i=0;i<20;i++){
(*ptr)++;
printf(""+(*ptr));
ptr++;
}
getch();
}
当我在VS2010上运行这段代码的时候,程序好像并没有遍历array数组,“printf(""+(*ptr));”这行代码应该1,2,3,...,21才对吧,请问我哪里错了?
...全文
159 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2012-10-29
  • 打赏
  • 举报
回复
++
[Quote=引用 2 楼 的回复:]
输出有问题,应该是:

printf("%d", *ptr);
[/Quote]
abaloon 2012-10-29
  • 打赏
  • 举报
回复
嗯,确实是,谢谢大家!
qin_zhu 2012-10-27
  • 打赏
  • 举报
回复
就是printf的原因。。。
禾刀人水 2012-10-27
  • 打赏
  • 举报
回复
看错了,只有一个问题
禾刀人水 2012-10-27
  • 打赏
  • 举报
回复
我觉得问题有两处:
一、如楼上输出格式不对;
二、(*ptr)++后,ptr已经不再指向array了
Double_Lan_2975 2012-10-27
  • 打赏
  • 举报
回复
你的打印有问题吧
newtee 2012-10-27
  • 打赏
  • 举报
回复
printf("%d",+(*ptr));
olderma 2012-10-27
  • 打赏
  • 举报
回复
msdn中查看printf用法
lin5161678 2012-10-27
  • 打赏
  • 举报
回复
java上面的做法吧 把数字转换为字符串输出
汗 既然换C了就稍微看看C怎么输出
这方面区别很大的
virtualxmars 2012-10-27
  • 打赏
  • 举报
回复
printf(""+(*ptr));

这样的行为翻译过来相当于:
输出一个字符串,该字符串的地址是常量""(也就是空字符串)的地址,再往后偏移ptr所指内容的值。即:

char* p = "";
p = p + (*ptr);
printf(p);

所以是不正确的
virtualxmars 2012-10-27
  • 打赏
  • 举报
回复
输出有问题,应该是:

printf("%d", *ptr);
chaojikugua 2012-10-27
  • 打赏
  • 举报
回复
printf(""+(*ptr))你这是输出吗?

69,369

社区成员

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

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