社区
C语言
帖子详情
p2=*&p1; 是什么意思?
cart55free99
2011-03-23 12:06:01
p1指向某个整型变量,要使指针p2也指向同一变量
我只知道int *p2=p1;
但是答案是p2=*&p1; 把p1地址的值赋给p2吗?
...全文
1871
26
打赏
收藏
p2=*&p1; 是什么意思?
p1指向某个整型变量,要使指针p2也指向同一变量 我只知道int *p2=p1; 但是答案是p2=*&p1; 把p1地址的值赋给p2吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pathuang68
2011-03-23
打赏
举报
回复
同意1L的说法。
hhh_hao
2011-03-23
打赏
举报
回复
错了,p1也是指针的话,int *p2=p1;就可以了
bluesky12312388
2011-03-23
打赏
举报
回复
是的
p2=*&p1;
&p1,取p1的地址,*(&p1)就是取出p1的值,也就是你说的把p1变量赋给p2
hhh_hao
2011-03-23
打赏
举报
回复
int *p2 = &p1, 应该是这样吧
AnYidan
2011-03-23
打赏
举报
回复
p2=*&p1 和 p2=p1是等价
hu771364
2011-03-23
打赏
举报
回复
int a;
int *p0=&a;
int *p1;
*p1=*&a;
不就是int *p1=&a;嘛
NowDoIT
2011-03-23
打赏
举报
回复
[Quote=引用 9 楼 awsqsh 的回复:]
p1的地址进行解引用!应该是这样的@
[/Quote]
++
wizard_tiger
2011-03-23
打赏
举报
回复
int *p2=p1;
int *p2;
p2=*&p1;
int *p2;
p2=p1;
这三个的结果都会使p2和p1指向同一个变量。
awsqsh
2011-03-23
打赏
举报
回复
p1的地址进行解引用!应该是这样的@
qcy_1990
2011-03-23
打赏
举报
回复
&p1,取p1的地址,*(&p1)就是取出p1的值
只要记住这个就行了
stonewomen
2011-03-23
打赏
举报
回复
不是的,那是把p1的值给p2的
如影随从
2011-03-23
打赏
举报
回复
*和&两个符号当连在一起使用的时候,相当于抵消的效果,所以说这个就相当于两个变量之间的赋值。
LBJMD
2011-03-23
打赏
举报
回复
既然p1指向某个整型变量,那么p1就是个就是指针了
则p2=*&p1 和 p2=p1是等价的
如果p1是整型变量,那么int* p2;p2=&p1;就把p1地址的值付给p2了
碎碎念
2011-03-23
打赏
举报
回复
这些都是等价的...
int *p2=p1;
<=====>
int *p2;
p2=*&p1;
<=====>
int *p2;
p2=p1;
秃头披风侠
2011-03-23
打赏
举报
回复
p2 = p1
如此美丽的你
2011-03-23
打赏
举报
回复
p1应该也是指针变量,此式等价于p2=p1,也等价于p2=&*p1
xali
2011-03-23
打赏
举报
回复
#include <iostream>
using namespace std;
int main()
{
int x=5;
int *p1=&x;
int *p2=p1;
int *p3=*&p1;
int *p4=&*p1;
cout<<x<<*p1<<*p2<<*p3<<*p4<<endl;
return 0;
}
zhh_kv
2011-03-23
打赏
举报
回复
问题没有阐述清楚:p1的类型是指针还是整型?
maoxing63570
2011-03-23
打赏
举报
回复
这题想着还真的有点幽默的感觉,int *q=*&p;首先取p(p为 int *类型)的地址,然后对该地址解引用,也就是p中保存的一个指向整形变量的地址,然后赋值给q
yihanJ
2011-03-23
打赏
举报
回复
同意5楼得说法,只要记住&p是取得p的地址,*p是取得p的内容,这样分析就会很容易了
加载更多回复(6)
C语言中的*
p1
++=*
p2
++
例:把一个数组的内容复制给另一个数组 #define SIZE 50 int x[SIZE]; int y[SIZE]; int *
p1
, *
p2
; void try2() { for(
p1
=x,
p2
=y;
p1
-x<SIZE; ) *
p1
++=*
p2
++; } *
p1
++ 后缀++ 操作符的优先级高于*操作符,即*
p1
++ = *(
p1
++) 故执行顺序为:
p1
++ ...
程序改错题
一、下面程序有什么错误: swap(int *
p1
,int *
p2
) { int *p; *p=*
p1
; *
p1
=*
p2
; *
p2
=*p; } //这里p是一个野指针,应改为: void swap(int *
p1
,int *
p2
) { int p; p=*
p1
; *
p1
=*
p2
; *
p2
=p; }//可以实现函数外部*
p1
*
p2
的交换 void s
swap( int*
p1
,int*
p2
)找错
下面的一段程序有什么错误: swap( int*
p1
,int*
p2
) { int *p; *p = *
p1
; *
p1
= *
p2
; *
p2
= *p; } 在 swap 函数中,p 是一个“野”指针,有可能指向系统区, 导致程序运行的崩溃。在 VC++中 DEBUG 运行时提示错误“Access Violation”。该程序应该改为: swap( int*
p1
,i
运算符优先级问题(*
p2
++ = *
p1
++)
1、*与++运算*
p2
++ = *
p1
++;++优先级高于*,而且是从右往走计算2、*与[ ]运算int *pa[10];*优先级高于[ ],故这是一个10个元素的数组,每个元素是int指针3、[ ]优先于++...
关于char p,*
p1
,**
p2
char p是声明bai一个字符类型变量dup,char *
p1
是声明一个字符类型zhi的指针变量dao
p1
,那么zhuanchar **
p2
就相当与给char类型的指针变量再声明一个指针.(2级指针) 举个例子,假如: char p='a';//假设声明了p后,p在内存的1000处,则&p=1000(&为取变量首地址) char *
p1
=&p;//则
p1
=1000,*
p1
=p='a',
p1
就和p关联了;假设
p1
被放在2000处 char **
p2
=&
p1
;//则
p2
C语言
70,024
社区成员
243,260
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章