C语言之中指针方面。*p=&a这种形式在什么情况下是正确的?!赋值表达式是错误的,但有的题目的题干

作者&投稿:謇峰 (若有异议请与网页底部的电邮联系)
C语言指针问题~

假如 P 是指针 那么 *p 就代表变量。 而&a是地址, *p=&a 就是把地址给变量,当然不正确了,因为地址只能给指针。
*p2,*p1都是变量,变量之间互相赋值是正确的。


“原因是被赋值的指针变量前不能再加*说明符”这句话的意思是:如果 给 指针P加上“*”,那么它就变成 了变量,代表的意义就变了,而地址只能赋值给指针不能给变量。


最后建议学习看书一定要读国外原著,国内翻译或作者的理解或描述,未必就是正确和合适的。

指针变量和普通变量没有什么区别,指针32位四字节,里面保存的是一个内存空间的地址,就像一个整形变量int a, a就可以代表一个整数,一个指针变量int* p,p就可以代表一个地址数据,而*地址,代表去这个地址指向的内存空间取出里面的内容,因此如果是要取出这个指针所指向的内存里面的内容就是*p,而如果是需要获得那个内存的地址,或者让另外一个指针指向这个空间时,就可以使用int* pb;pb=p;
&变量名这是获取保存这个变量的内存空间地址
应该说c语言是门十分灵活的语言,类型几乎可以说无所谓了,有的只有内存和读取的方式,什么几级指针,都没有意义,就算是一整形,只要强转,也可以当作地址数据来用,只是可能会段错误,因为没有做地址映射
有的时候确实不太好理解,不过这个随着时间的积累,慢慢会理解的

如果p的类型和a的类型一致就没有错。*p=&a 是将a的地址传给指针p指向的变量。还有种可能 int *p=&a;定义一个指针变量并赋初值 。指针就是地址,给指针变量赋值地址没有错(前提是变量类型一致,比如char a;int *p=&a是错误的)。

在有 int a 声明的情况下
int * p=&a; 是成立的

不一定,如果p是一个多维指针的话,在非声明语句中也可以这么用。


c语言 什么是行指针 求大神详细解释。
1:指针是一个地址,指向的是个类型:我们知道,c语言中的类型有int,char,bool(这个不常用),一般我们使用int,char就可以满足一般的类型需求的,如果对于变量的长度过大,就是用long ,float,double,关于各个类型使用的的长度问题,可以使用sizeof(int)或者sizeof(long)来查看各个类型,在系统...

请一些c语言指针方面的概念,*p=&n, p=n, *p=n, p++,*p++ *(p+1...
int m = 0;int *p = &m; \/\/p指向变量mint n = 20;现在来说明这几个分不清的含义:(1)*p = &n; &n是取变量n的地址,然后赋值给指针p所指向的内存空间。因为&n是一个地址类型(可看作int指针类型),而*p即为取变量m的值为int类型,等号左右两边类型不匹配,C语言默认强制类型...

c语言中指针的定义问题。为什么*q加括号?
加不加括号,是数组指针,还是指针数组的区别 p[2] 是一个指针数组,首先它是一个数组,数组中存的是指针,存指针的数组。(*q)[2] 是数组指针,加括号先与 *结合,它是一个指针,指向一个第一维包含2个元素的2维数组,存数组地址的指针。q=s ; 把 数组 s 的地址存入 q p[0]=s[0] ...

c语言中指针到底有几种类型啊?
尽管这几种类型数据的长度和范围随处理器的类型和C语言编译程序的实现而异,但以bit为例,整数与CPU字长相等,一个字符通常为一个字节,浮点值的确切格式则根据实现而定C语言还提供了几种聚合类型(aggregate types)。包括数组、指针、结构、共用体(联合)、位域和枚举除v o i d类型外,基本类型的...

C语言中指针的问题
51单片机内存结构比较特殊,有rom, ram之分,ram有 data,xdata之分,不同的内存使用不同的指令访问。现在问题来了,一个变量在内部ram中,只有8位地址,放在xdata中,有16位地址,放在rom中,也是有16位地址,16位rom地址显然与xdata地址的含义不同,所以通用指针实际上需要3字节表示,其中有一个字节...

51汇编语言三个数据指针是什么
51汇编语言三个数据指针是DPTR、R0和R1。1、DPTR:数据指针寄存器,是一个16位的寄存器,用于指向数据存储区中的某个地址,一般用于程序与外设之间的数据传输。2、R0:寄存器0,是一个8位的寄存器,可以用于存储数据或地址。3、R1:寄存器1,也是一个8位的寄存器,用途和R0类似,可以用于存储数据或地址...

C语言中指针和引用的区别
引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。这两个概念没有任何相关性。指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。引用是一种形式、方法,定义的引用变量,实际上是原实际变量的另...

c语言 简单的指针问题
int *p; 定义了一个指向整形数的指针变量 p。p=1000;该式子左边是指针型的 右边则是int类型 ,所以不能成功赋值。虽然p作为指针是指内存中的物理地址单元,也是一个整数序号, 但 当我们写1000,编译系统会默认为int类型,而不会把1000作为一个内存单元地址 赋值给p。强制类型转换应该是(int *...

急!!叙述对C语言指针的认识,在使用指针时应该注意什么问题? 谢谢大神...
(4)int(*ptr)[3];\/\/指针的类型是int(*)[3](5)int*(*ptr)[4];\/\/指针的类型是int*(*)[4]2.指针所指向的类型 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针...

指针定义
计算机中的内存都是编址的,每个地址都有一个符号,就像家庭地址或者IP地址一样。在C语言的多数实现中,指针值等同于一个无符号整数(unsigned int,因不致歧义,下简称“整数”),它是一个以当前系统寻址范围为取值范围的整数。声明一个无符号整数并使它的值等于对象的地址值,实质上也能使之有指针...

黄梅县19654572698: c语言指针一块中,语句 *p=&a与p=&a的区别所在 -
佼哀盐酸: p=&a 表示p是一个 一级指针,把a的地址赋值给p,或者是p指向a的地址.*p=&a 表示p是一个二级指针,把a的地址赋值给*p,或者是*p指向a的地址.

黄梅县19654572698: c语言中*p=a与*p=&a有什么区别 -
佼哀盐酸: 让我来综合一下吧 在定义的时候 int *p=&a; 是等同于 int=*p; p=&a;的.该形式只在定义的时候是正确的.就是指针p所指向地址的内容为a的内容. 如果不是定义的时候 *p=&a; 就是它字符的那个意思,就是指针p所指向地址的内容为a的地...

黄梅县19654572698: c语言中的*p为什么等于&a中的数据啊?我还是不明白指针 -
佼哀盐酸: &a表示的是 取出a的地址 *p=&a表示指针p指向a,所以他们表示的都是a的值,“=”是赋值不是等于啊

黄梅县19654572698: c语言中,指针变量p,整型变量a,p指向a;那么*p 、 p、 a、 &a是什么关系? -
佼哀盐酸: 指针类的题目记住一个原则,就是两边类型要一致. 因此,*p=a和p=&a是对的,其余是错的. 在这里p是指针,而*p是变量,所以*p=a是对的. 什么是指针,指针就是地址,因此p=&a是对的. 这里最容易混淆的一点是:定义时的写法可以特殊一点.例如: int a=8; int *p=&a; 这也是对的,尽管违背了我前面前的原则(左边是变量右边是地址),但这是定义,等同于: int a=8; int *p; p=&a;

黄梅县19654572698: 关于C语言,*p=a[0]是什么意思呀? -
佼哀盐酸: c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:1.指针变量定义时的初始化赋值int a[10];int *p=a ; //这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a. 这里的*是跟随int的,用来表示p变量是int...

黄梅县19654572698: C语言中*p=&a就是指针p指向变量a的地址吗? -
佼哀盐酸: 那要看是什么情况了,如果是定义的时候赋值就是把a的地址赋给p 如: int a; int* p = &a;如果不是初始化就是把a的地址赋给p里存储的地址,如: int a; int* b; int* p; p = &b; //p指向b的地址 *p = &a; //让b存着a的地址运行结果如下 第二项试图将a的地址放在p指向的b里,因为b是(int),而a的地址是(int*),发生了错误直接赋值等" int* p = &a; "同于" int *p; p = &a ",不要弄错

黄梅县19654572698: 来高手!求解! C语言中,指针 定义int a,*p=&a;中的*p=&a 和表达式中的 p=&a; 有什么区别? 是不是一样 -
佼哀盐酸: 1.*p=&a等价于int *p;p=&a; 也就是该指针是个2维指针,是指向了另一个指针的地址后再让那个指针指向a的地址 指针变量前面的 "* ".表示该变量的类型为指针变量. 2.p=&a把变量a的地址赋给p.

黄梅县19654572698: C语言: int *p=&a绝对是不对的吧? -
佼哀盐酸: 这个写法是正确的啊! 在和类型一起申明的时候是应该这样写. 因为是申明,就是前面有内省的时候*p表示的不是一个值,是一个整形指针.可以改为如下,int *p;p=&a;

黄梅县19654572698: C语言问题!在C语言中,**p 和*&a[1]以及,*p=&a,什么意思 -
佼哀盐酸: **p是指向*p的一个指针,*&a[1]是先取a[1]的地址,然后指向其地址,其实就是a[1],后一个取a的地址并赋值给p,然后*p就指向了a

黄梅县19654572698: c语言指针那块的一个问题.为什么有的时候p=&a,有的时候*P=&a?有的时候还不加&? -
佼哀盐酸: 刚定义的时候int *p=&a这里要加 但是int *p 然后p=&a就不用加*

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网