指针赋值的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:25:09
p=&a; //等号2边都是地址
*p=a; //等号2边都是值

这两种赋值方法都可以吗
能不能举个例子
二楼的大哥 你的第二个程序根本不对嘛 你试过没有?

其实指针也是一个值,一般的32位机器里面就是一个int值,4个字节大小;而这个int值表示的是一个内存地址;
假设一个 指针 *P
那么,P的值实际上就是一个int值,这个值代表的是一个地址
*P就表示取那个地址里面的内容
如果是int型指针,那么取的值就是int型,
如果**P表示取的是*P指向的内容也是指针,取这个指针的内容;
而P由于本身是存在内存中的一个数,所以,你可一通过&来看他在内存中的地址,也就是&P

赋值无非就是一个空间的数拷贝到另一个空间,就这么简单。

我在tc2.0下完全通过呀 ,怎么会有问题!
#include <stdio.h>
void main()
{
int a=1;
int *p;
p=&a;
printf("%d",*p);
}

#include <stdio.h>
void main()
{
int a=1;
int *p;
*p=a;
printf("%d",*p);
}都可!
这两个程序出的值都是一样的

p=&a; //等号2边都是地址
*p=a; //等号2边都是值
如果a=1的话,*p也等于1。a 的地址是0x126556那么p的值就是0x126556,这个地址里的内容就是1。

p是个指针变量,保存的是地址,&a就是a在内存里的地址,这个语句的意思就是,把变量A保存内容的地址给了P,这样,用A和P都可以操作A保存的内容,而*P就是A所保存的内容,和A是一样的,重要的是*P和A指相同内容,不是复制品,内容变动,都受影响。