首页 > 编程知识 正文

p&p的含义是指什么,*p=&a

时间:2023-05-03 11:14:46 阅读:162053 作者:332

1 .假设定义指针p指针p。 1、p三个符号常用2、*p; 3、p; 初学者经常迷茫,这三个符号到底代表什么?

*p是指针变量的名称,表示指针变量指向的内存地址,已知使用%p进行输出将是十六进制。 另一方面,p表示存储在该指针所指向的存储器地址中的内容,一般是与指针类型一致的变量或常数。 是取地址的运算符,我知道p取指针p的地址。 等等,怎么又来了地址,那到底和p有什么不同?

不同之处在于,指针p也是一个变量。 既然是变量,编译器就必须分配内存地址。 程序中定义了int类型的变量I,这与编译器分配内存空间相同。 另一方面,p表示编译器分配给变量p的存储器地址,p是指针变量,所以该特别的id指向其他的存储器地址,程序员根据程序的需要指向存储器地址,该指向的存储器地址是p 另外,p所指向的地址内容用p表示。

1.1例题“: int i,j=7,*p=i;i=j; 的语句是()。 ”

A.i=*p; B.*p=*j; C.i=j; D.i=* *p; 根据定义,

由于指针p指向I地址,所以p指向地址的内容*p是I的值

i=*p相当于i=i*p=*j,正确的i=j无法为整数变量i=**p分配地址,且P不是辅助指针。 **p强制将I值视为地址时,在导致不可预测的结果的问题中,定义整数变量I和j,将7代入变量j中被初始化的*p=i是指整形指针的变量p为变量I的地址,即变量I存储在变量p中的地址i=j表示将7的值代入变量I。 也就是说,I的值为7。 与此等价。 也就是说,用同一代入式,b的答案*p=*j; 中j取得地址,*j取得地址中的值,即7,表示分配给变量p的值,即I。

2. *p和p之间的差异: 2.1差异1、表示意义不同的p表示存储在这个指针所指向的存储器地址中的内容。 p表示指针变量的名称,并指向此指针变量指向的内存地址。

2、输出格式不同的p一般是与指针类型一致的变量或常数。 p输出十六进制,输出指针的地址。

3、功能差异*p是让程序将数据取出到那个地址。 p保管着地址。

例如: 1、inta [5]={ 1,2,3,4,5 }; int *p=a; //这是在定义指针变量p的同时直接初始化,也就是分配数组a的起始地址。

例2,inta [5]={ 1,2,3,4,5 }; int*p; //声明指针变量p p=a的(p )操作是指,作为地址空间的可取值返回p值的运算。 (p )是返回到当时宣布p时打开的地址的运算。 可以通过赋值语句为存储器地址赋值。

2.2p和**p

如上图所示:

假设在展开空间时,p被分配3001H时间、3002H时间两个位置。 p为2003H,*p为3001H。

(开拓空间时,假设p被分配到3001H、3002H两个位置) ) ) )。

int *p;

p=2003H; //p指向2003H,值为30 00*p=3000H //p的对象的值是否为3000H 1.**p的值?

*p=**(*(p ) )=* ) (2003h ) ) ) )=0300H )=0300H。 因此,**p是3000H所指的对象,值03 00 2.p是多少?

p=(p ) )=) 3001H ),p是获得p的地址,即我们预先假设的3001H。 给3001H取了地址,此时出现了错误。 3001H是常数。 怎么会有地址呢? 3.*p的值是多少?

*p=*((p ) )=* ) 3001h )=2003H,即) p=p。 //*(3001H )得到3001h所指的对象20 03——。 那个能得到的不是自己哦。 4.*p的值会变化多少?

*p=() (p ) ) ) 3000H ),读者可能认为) p=p,此时发生了错误。 同样的3000H是常数,怎么可能有地址呢? **p的值是多少? *p=*(*(p ) )=* ) ) (2003h ) ) ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。