【发布时间】:2012-10-27 02:20:53
【问题描述】:
#include<stdio.h>
int main()
{
int *p=0;
char *ch=0;
p++;
ch++;
printf ("%d and %d\n",p,ch);
return 0;
}
输出:
4 and 1
我知道 char 指针在它所指向的地址中也随着 +1 递增。
我知道指向 int 的指针在它所指向的 gcc 中的地址中也随着 +4 递增。
我知道解引用指针应该通过使用 * 和指针来完成。
查询:
为什么这没有给 p 和 ch 任何垃圾值,因为它们都是指针并且没有分配任何地址;
为什么这给了我相应指针在递增时获得的地址差异,或者 这是一个未定义的行为。
3.为什么输出4和1?
Pl。解释一下。
我在 gcc-4.3.4 上编译了这段代码。 它是一个C代码。 如果这是某个问题的副本,我很抱歉,因为我无法在 stackoverflow 上找到任何此类问题。
【问题讨论】: