printf产生异常响应

问题描述

我正在练习指针算术,但是printf语句的响应令人困惑。我的理解是,应该先打印101,然后再递增。但是问题出在这里...

getCalories()

它产生以下输出

#include <stdio.h>

int main()
{
int a[] = {101,276,345};
int *ptr = a;
printf ("%d\n%d\n",*ptr,*(++ptr) );
return 0;
}

但是,当我将代码更改为以下内容

276
276

正在关注

#include <stdio.h>

int main()
{
int a[] = {101,345};
int *ptr = a;
printf ("%d\n",*ptr);
return 0;
}

解决方法

++ ptr更改了原始指针,请尝试使用ptr +1代替++ ptr

#include <stdio.h>

int main()
{
int a[] = {101,276,345};
int *ptr = a;
printf ("%d\n%d\n",*ptr,*(ptr + 1) );
return 0;
}