|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void main()
{
int *p,i=100;
*p = 20;
p = &i;
printf("*p=%d\n",*p);
printf("%x\n",p);
printf("i=%d\n",i);
printf("%x\n",&i);
}
这个如果把 *p = 20;去掉,就可以打印出来,
void main()
{
int i1 = 30;
int i2 = 40;
int *const pi = &i1;
*pi = 80;
printf("%d\n",*pi);
}
而这里*pi = 80;是没有问题的,怎么感觉有点晕了,越来越糊涂了。
void main()
{
int *p,i=100;
*p = 20;
p = &i;
printf("*p=%d\n",*p);
printf("%x\n",p);
printf("i=%d\n",i);
printf("%x\n",&i);
}
*p = 20;
p = &i;
这两句写反了,应该是
p = &i;
*p = 20;
int *p,i=100; 这句中的 *p 只是说明 p 是个指针
*p = 20; 这句中的 *p 是引用 p 指向地址的内容
如果这样写
*p = 20; // 这里的 p 还没有赋值
p = &i;
p 就引用了一个 未知 的地址
void main()
{
int i1 = 30;
int i2 = 40;
int *const pi = &i1;
*pi = 80;
printf("%d\n",*pi);
}
int *const pi = &i1;
*pi = 80;
这里的 pi 既说明是指针类型,又给pi 赋值为 i1 的地址,所以下面就可以使用 这句 *pi = 80;
如果上面那个这样写也行
int i=100;
int *p = &i;
*p = 20; // 这里的 p 已经赋值
p = &i; // 上面已经给 p 赋值了,这里就不需要了,可以删掉,但是不删也不会影响程序运行
|
|