【发布时间】:2014-09-22 16:07:44
【问题描述】:
我没有得到输出。为什么会这样?
#include <stdio.h>
int main(void){
int a[3][3];
int *p, *q;
p=a[0];
q=a[1];
printf("%d\n",sizeof(int));
printf("%d\n",q-p);
printf("%d %d\n",q,p);
return 0;
}
输出
4
3
2686728 2686716
我认为(q-p) 应该是12!我的数学有问题吗?!
【问题讨论】:
-
启用编译器警告,您将
ints 分配给指针并对 2 个不相关的指针进行(整数)算术运算。此外,您的数组未初始化,因此a[0]和a[1]具有未指定的值。 -
根据指针算法这是正确的。检查Differencing,即两个指针相减。
-
@Ani 想解释一下为什么?
-
它显示了基本类型(
int)的单位差异。 -
@juanchopanza:为什么
q-p应该是12?
标签: c pointer-arithmetic