c语言关于指针问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:13:22
假设int * p1,int * p2
int p
P是变量,P1和P2是指针变量。
我的问题: P=p1吗,能把P1值赋给P吗。能详细说明原因吗。

不行
你得知道一个指针 p1 中储存的是什么
p1里储存了一个地址,P是int 。不可能吧一个地址赋值给P。除非P也是一个指针。

P=*p1是对的。因为*符号是取指针变量指向变量的值。但是这样直接用是不行的。因为p1没有指向任何东西。如果这样就可以了。
main()
{
int p, *p1;
p=10;
p1=&p;

int P;
P=*p1;
return 0;

}

这样就可以了。

另外
int *p;
p=15 这样的也是行不通的,因为指针不能储存一个int,但是如果指针已经指向某个变量就可以 *p =15 这样操作了。
int P = 15;
int *p =&P;

这样以后,你试试 *p的值也是15.你可以用*p=16这样的语句,然后看看P的值是不是也变成了16?所以,指向后*p就可以看做指向的变量P了。
qq107395975

可以。

首先p1没有赋初值,怎么赋给p,如果可以赋值也应该是p=*p1;因为*p1才是p1指向的内存内的内容,而p1只是其内存地址,如果直接p=p1;咋有点像赋地址呢。。。(当然这样类型是不对的啊)
通常会让p1指向p,这样用比较多的,p1=&p;

int * p1,int * p2;
int p;

这样定义 p1 p2 是整型 指针变量,p 是整型变量。

P=p1 这样的赋值是不对的

正确地赋值方法是

p = *p1;

通过 * 运算符 把 指针p1 所指地址存储的值赋给变量 p。

以下内容仅供参考,如果要使用,要在理解的基础上。

来硬的

这样

p = (int)p1;
这样p 里就是 p1 存储的具体数值,就是地址了。

不能
如果要达到你的