关于C指针的一个问题

lyh7736362 2009-12-14 01:43:07
#include <stdio.h>
#define MAX 10

int i_array[MAX] = {0,2,4,6,8,10,12,14,16,18};
int *i_ptr , count;

float f_array[MAX] = {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9};
float *f_ptr;

int main (void)
{
i_ptr = i_array;
f_ptr = f_array;

for ( count = 0 ; count < MAX ; count++ )
printf ( "%d\t%f\n", *i_ptr++, *f_ptr++ );
return 0;
}

运行结果
0 0.000000
2 0.100000
4 0.200000
6 0.300000
8 0.400000
10 0.500000
12 0.600000
14 0.700000
16 0.800000
18 0.900000
请按任意键继续. . .

在最后打印这里, *i_ptr++, *f_ptr++ 不是数值+1吗,怎么是会这样
...全文
74 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyh7736362 2009-12-14
  • 打赏
  • 举报
回复
多谢大家帮忙!
苍蝇①号 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sduxiaoxiang 的回复:]
先打印出*_ptr的值
再指针++指向下一个
[/Quote]
sbg_ruz 2009-12-14
  • 打赏
  • 举报
回复
把i_array的首地址给指针i_ptr,在输出的过程中*i_ptr++是输出这个地址中的内容,也就是i_array【0】=0;然后指针地址加1,指向下一个数据。
至善者善之敌 2009-12-14
  • 打赏
  • 举报
回复
上面的已经回答很清楚了,是先把地址+1,然后在取地址里的数值。
lyh7736362 2009-12-14
  • 打赏
  • 举报
回复
我是LZ,我想问的是 *i_ptr++, *f_ptr++ 到底是一个指针地址还是数值
phpjspasp 2009-12-14
  • 打赏
  • 举报
回复
*i_ptr++

* 和 ++ 都是单目运算符,右结合。从右往左算,也就是*(i_ptr++)
xingtaoqq 2009-12-14
  • 打赏
  • 举报
回复
明显是先++,再 * 。所以指针先加1,然后再取值
DLevel 2009-12-14
  • 打赏
  • 举报
回复
抱歉,× 理解为 *
DLevel 2009-12-14
  • 打赏
  • 举报
回复
× 和 ++的优先级一样的,而且他们都是从右往左的结核性,所以,读起来应该是 ×(i_ptr++),这么找清晰了么,所以他的意思是, 先++指针(看++特性),在取值.(貌似和楼上一个意思唉.)
sduxiaoxiang 2009-12-14
  • 打赏
  • 举报
回复
先打印出*_ptr的值
再指针++指向下一个

69,369

社区成员

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

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