问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中指针*p=*q与p=q有什么区别

发布网友 发布时间:2022-04-30 01:44

我来回答

5个回答

热心网友 时间:2022-06-28 07:45

答:*p=*q与p=q的本质区别在于:*p=*q操作的是变量存储的数值,p=q操作的是指针变量本身

C语言中,指针操作主要有以下三种情况:

*p   是指针变量p指向的变量a的存储内容,*p = 5;

 p   是指针变量的存储内容,因为p指向a,所以p的存储内容(存储空间的值)就是系统为变量a分配的存储地址;

&p  是对指针变量p进行取地址的操作。


扩展资料:

指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用(reference)数据形别。

许多编程语言中都支持某种形式的指针,最著名的是C语言,但是有些编程语言对指针的运用采取比较严格的*,如Java一般避免用指针,改为使用引用。

有两种含义,一是作为数据类型,二是作为实体。

指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量。指针一般出现在比较底层的程序设计语言中,如C语言。高层的语言如Java一般避免用指针,而是引用。

指针作为数据类型,可以从一个函数类型、一个对象类型或者一个不完备类型中导出。从中导出的数据类型称之为被引用类型(referenced type)。指针类型描述了一种对象,其值为对被引用类型的实体的引用。

C++标准中规定,“指针”概念不适用于成员指针(不包含指向静态成员的指针)。C++标准规定,指针分为两类:

1、object pointer type:指向void或对象类型,表示对象在内存中的字节地址或空指针。

2、function pointer type:指代一个函数


C中函数调用是按值传递的,传入参数在子函数中只是一个初值相等的副本,无法对传入参数作任何改动。但实际编程中,经常要改动传入参数的值。

这一点我们可以用传入参数的地址而不是原参数本身,当对传入参数(地址)取(*)运算时,就可以直接在内存中修改,从而改动原想作为传入参数的参数值。

(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。显然可以用赋值语句对内存地址赋值。

参考资料来源:百度百科-指针

热心网友 时间:2022-06-28 07:45

若p和q是申明为类型兼容的指针变量,且都正确赋有合法值且不为NULL,那么,*p=*q是把指针q指向的目标值赋给指针p指向的目标;p=q则是使指针p指向指针q指向的目标(最终是p和q指向了同一目标,这个目标就是q指向的目标)。在q==NULL时,*p=*q非法操作,p=q是合法操作(使p和q同为NULL)。综上,除q为无效(NULL)时不能取值操作外,正常情况下*p=*q操作的是指针指向的目标,p=q操作的是指针本身——这是二者的本质区别。以下代码可以验证:

#include "stdio.h"
int main(int argc,char *argv[]){
int *p,*q,a=334,b;
q=&a;
p=&b;
*p=*q;
printf("b = %d,\ta = %d\n",*p,*q);//b获得了a的值
p=q,b=123;
printf("*p = %d,\t*q = %d,\tb = %d\n",*p,*q,b);//p,q都指向了a,b值未变
q=NULL;
p=q;//NULL指针作右值是合法的
printf("p = %p,\tq = %p\n",p,q);
printf("%d\n",*p);//取NULL指针的值*p是非法的
return 0;
}

验证结果如下:

热心网友 时间:2022-06-28 07:45

*p=*q,意思是说,将q指针指向地址的值传给p指针指向的地址,此时p和q是指向不同地址的(当然是在原先p和q就不同的情况下)而p=q呢,则是说将q指针指向p指针指向的地址,此时pq指向同一位置,共享同一段内存

热心网友 时间:2022-06-28 07:46

指针指向的是一个地址,但这个地址里面可能是一个变量,也可以是个常量,或者是其它类型...
p=q只是一个变量间的传数据传递

热心网友 时间:2022-06-28 07:47

1)*q是指针所指向的一个字符,所以把一个字符串赋值给一个字符,显然是错误的.
2)C语言不进行强制的类型识别,所以一个字符可以以数值形式赋值,实际你赋值的内容是它的ASCII码,也就是'd'
3)C语言中字符串不能直接给指针赋值,而应该使用函数:strcpy,strncpy.函数原型为:
char *strcpy( char *strDest, const char *strSource );
char *strncpy( char *strDest, const char *strSource, size_t count );
4)printf函数中使用字符串时,应该直接使用指针.而不带*
5)从这句:*p=&x;来看,p是指针的指针,所以*p是指针,所以用法是正确的.

从以上分析得出几点结论:
1)C语言对数据类型不会进行强制识别,字符型数据可以赋值为数字,字符指针可以指向数字,指针本身也会有指针.
2)指针只是指的一个地址,这个地址本身也是数据.如果把这个地址当作字符串使用的话,一定要直接使用指针,如果使用形如*p这样的用法的话,只是指的p指向的首地址的字符.

Any more problems?
C语言中指针*p=*q与p=q有什么区别

答:*p=*q与p=q的本质区别在于:*p=*q操作的是变量存储的数值,p=q操作的是指针变量本身 C语言中,指针操作主要有以下三种情况:p 是指针变量p指向的变量a的存储内容,*p = 5;p 是指针变量的存储内容,因为p指向a,所以p的存储内容(存储空间的值)就是系统为变量a分配的存储地址;&p ...

C语言中,*P=*Q,*P=&Q,*P=Q有什么区别?

p=*q是把q指针所指向地址里存放的数值赋给p指针指向的地址,简单说就是把q指向的变量里的值赋给p指针指向的变量 P= &Q 是错的除非是在定义的时候可以。int *p=&q;p=q啥也不是。

c语言中 指针的指针赋值问题,void **p, void *q; p = &q,与*p= q的...

p = &q是把q的地址给p,使p指向q p= q是把q的值赋给p所指向的存储单元 画个图好理解些

C语言中有两个指针*p.*q,然后p=q,如果再有一个指针*m,把它地址给q,那...

你等于重新赋了新(地址)值,当然q变新的 值啦。p 没变,还是老的。用 %p 格式 打印地址看看就知道了:include <stdio.h> int main (){ int b=0;int *p,*q,*m;int a=3;q=&b;p=q;m=&a;q=m;printf("p=%p q=%p m=%p a=%p\n",p,q,m,&a);return 0;} ...

在c语言中*p是什么意思 *p||*q又是什么意思 求高人指点

第一个*p是什么意思:这里不能说*p是什么意思,因为在C语言中*p在不同的场合代表是不同的。比如程序开头的int *p;这句指建立一个指针型变量p;如果在程序中如 include<stdio.h> void main(){ int a,b;int *p; //建立个指向整型的指针变量p a=3;p=&a; //指向整型的指针变量可以被...

*p=*q这是什么意思?c语言指针问题

将q指向指向的地址空间的值赋值给p指向指向的地址空间

C语言问题 int *p,*q,m=5; p=&m;q=p; 请问指针q=p是什

q=p 即将p的值(地址)赋给q,操作完之后 p指向 m;q指向m 操作 *p时 *q的值也会改变

c语言的指针部分 *p与p区别

c语言的指针部分 *p与p区别如下:1、作用不同 p表示此指针指向的内存地址中存放的内容。p是一个指针变量的名字,表示此指针变量指向的内存地址。2、输出内容的格式不同 p常用在一个和指针类型一致的变量或者常量。p输出一个指针的地址,通常是输出一个16进制的数。3、效果不同 p是让编译器从指定的...

C语言 选择 求教 关于指针

int a, *p, *q, p = q = &a;是也是错误的,因为int a, *p, *q是声明语句,而p = q = &a是赋值语句,它们是不能在同一条语句中的。对于(2)我们需要知道非地址值是不能赋值给一个指针变量的,其实也就是不同类型的变量不兼容而已,因为C语言是强制类型语言。那么int a, *p, *q...

c语言,多重指针。例如int **p,intq,如果p=q,那么p=&q对吗

int **p; p是二级指针。int q; q是整型变量。那么 p=q; 本身就是不对的。p=&q一样不对。都是类型不匹配。 p二级指针, &q一级指针。 q整型变量。 这三个类型都不一样。正确做法是 int **p, *p1, q;p1=&q;p=&p1;这样类型才是对的。

Qt中的d指针和q指针 c语言中指针的定义 指针p等于指针q 设指针q指向单链表中节点A c语言行指针 c语言指针详解 c语言指针类型 c语言指针地址 c语言指针数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
奥德赛和gl8如何选择? 5星的5怎么组词 dnf里面鬼泣和阿修罗哪个刷图厉害? 现在我玩的鬼泣,可是技能点不够用了... dnf阿修罗和鬼泣哪个更好啊?我是新手,就侧重刷图。要从装备,刷图,优缺 ... 手机nfc功能能模拟哪些卡? 在教学中面对不同气质类型的学生应当如何进行有针对性的教育?试结合实... ...类型的学生应当如何进行有针对性的教育?请结合实例进行说明_百度... Excel如何排序后让后面的数据跟随变动 在教学中,面对不同气质类型的学生应当如何进行有针对性的教育?试... GUYS简介 为什么如果P则Q和P并且非Q 互相矛盾 数学中p∨q 和p∧q是什么意思? p或q 和 p且q的关系 p并且q 和非p并且q 是什么关系 把油打翻了,是什么兆头? 古话说倒了油是什么预兆? 厨房炒菜的油撒到地上了是不是有什么说法? 别人不小心把油撒我身上,会不吉利吗? 不小心打捯油,按民间风水迷信说法,会有什么影响,油是我们平常食用的花生油。 上香香油倒地就是烧香的时候旁边有拜神用的油,不小心倒在地上且衣服上了,好还有不好,请大师讲解下好 今天在厨房做事是不小心把碗里的油倒了,是不是不吉利,听说会破财,不晓得是不是真的? 我今天不小心倒了一盆油,都说这个兆头不好,到底会怎样呢?求解。 不小心把油打翻了代表运气不好?会有很多不顺心的事吗?今年本命年,真是说不出的倒霉..... 上香香油倒地就是烧香的时候旁边有拜神用的油,不小心倒在地上且衣服上了,好还有不好,请大师讲解下好 信用卡查询额度怎么查 我想弄块玉石原石,哪里可以搞到? 广东哪里可以加工大型玉石原石 和田玉原石哪里可以出手 前几天申请的信用卡拿到了,但是没开卡,想知道信用卡额度多少,我能通过哪些途径查询呢? 梦幻西游手游子夜玉原石怎么获得 GDP=P×Q中P和Q分别代表什么? 逻辑数学中P→Q和P=>Q的区别是什么,不要用一个是联结词一个不是联结词来糊弄我。 考研逻辑公式的p和q是什么意思 p=q和p->q有什么区别 是不是只要有建行卡在所有网点都能办理ETC? 这建行信用卡可以免费办理etc么? 怎样在百度上发布自己的信息? 怎么选择全彩led城市道路交通诱导屏尺寸 先创数字led诱导显示屏怎么改字? 都有哪个行业用到LED显示屏啊? vivox5sl手机蓝牙耳机连接后怎么用? 上海有没有定做风衣的地方,做风衣的布料哪种比较好呢 夹克、风衣、棉衣、卫衣都是什么区别啊? 风衣和皮夹克哪个好看 孙红雷《扫黑风暴》里面的风衣外套是什么牌子? 男夹克与男风衣 有什么区别 夹克和风衣有什么区别 智能会议系统音响系统的常见问题故障? 用全时的会议系统安全否? 湖北鄂州属于哪个市