平板ipad怎么下载派派:C语言指针问题

来源:百度文库 编辑:高考问答 时间:2024/04/27 16:20:06
int a=115,*p;
printf("%d",&a);
结果返回 -42

设想
p=-42
printf("%d",*p)
返回结果 115

看起来好象指针p已经指向了变量 a

但是执行
*p++;
printf("%d",a)
结果还是115

请高手指点.怎么样不需要 p=&a;这句代码的情况下.知道了他的内存地址,也可以直接操作变量a,

p=&a 这句代码指向变量a ,请问指向是a内存地址.是以16进制表示还是2进制

*p++应该改为(*p)++,就可以了。

因为*p++执行的是先p++,然后再取值。所以等于什么也没有做。

p = &a就是让p指向a,任何东西在内存中只能是2进制。你可以把它写成16进制以便于观察,也可以写成10进制符合人们习惯。但是数字是多大就是多大,与表示方式没有关系。

你可以借助一个变量 再用强制类型转换来做 代码如下
void main()
{
int a = 115;
int *p = NULL;
int x = 0;
x = (int)&a;
p = (int *)x;
printf("%d\n",*p);
}

这种问题没有意义的
地址存的是01代码 你也可以用其他进制表示

因为在你定义a时系统就给分配了一块空间,这是系统默认的位置,所以没有那句话也可以找到a,其实所输出的是a的执针位置。
2、是以2进制存储的,具体的可以在书上找到。

一楼说的对~