,c语言,谁能告诉我*q++=*P++含义,

作者&投稿:张重 (若有异议请与网页底部的电邮联系)
C语言中*p++ = *q++ 怎么理解?~

这是个赋值表达式。"q++"是把q指针变量所指向的内存空间地址自加一个“内存单元”(如果这个指针变量的类型是int类型,那么q自加“一个内存单元”就是增加两个字节),取当前所指内存中的数值(即是,*q++)存储给P当前所指向的内存地址空间,再自加一个"内存单元",最后再取该空间的值作为整个表达式的值的逻辑值。

实际就是:
找地址→取值→赋值给指定内存→再把值取出来作为表达式的逻辑值。

个人建议:实践是检验真理的唯一标准。像这样拿不准的代码,用一个实例来检验是最好不过的了。

*P++ :*和++都是同级运算符,右结合。但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。
下面具体区分
1、*p++:只将p加1
2、++p or p++:将p加1
3、++*p:将*p所指单元加1
4、++*p++:将p加1,同时也将*p所指单元加1

扩展资料
*p++先执行++再执行*,分三步
(1)先执行p++,因为是后置,先用p
(2)再执行*p,取p所指的内容
(3)最后再让p++,让p的地址加一个单位
具体的看代码
#include
using namespace std;
void main(){
int a[5] = { 2, 4, 5, 8, 9 };
int *p;
p = a;
cout << "p的值为" << p<<endl;
int i=*p++;
cout << i << endl;
cout << "*p++后的p的值为" << p <<endl<< "*p的内容为" << *p;
}
参考资料 百度百科——优先级

*表示这是一个指针,q和P都是指针变量,里面存放的数据一般情况下是一个地址。
如果你定义了一个变量如: char a;
那么系统会分配给这个a一个房间来存储char型的变量,这个变量(房间)很显然是有地址的(门牌号),不然你就找不到这个房间了。
如果定义了一个指针一般都会给这个指针赋值,比如:q=&a; &是取地址符。q前面加一个*就是*q,*就是一指针,而q里面的内容是a的地址(门牌号)。
*q就是指向这个地址的. 你访问*q的时候它一下子就指到了a的门牌号,所以你看到的就是a里面的东西;
如果a=5; p=&a; 那么 *p=5;
++就是自加的意思a++;就是a=a+1 ;
我想你应该是看错了或者打错了吧。
应该是*(q++)=*(P++);才对的吧?

++,*的运算符级别相同,但是结合律是 从右到左的 所以先执行++,先执行*p = *q,在执行++的,这是因为++的特性
指针q所指的内容自增后赋给指针p所指的地址的下个单元,比如说是int类型(占四个字节)
假设q存储的地址是100,那执行q++后所指向的地址就是104(并不是101,要注意这一点)(p++类似,不再说明)
再把104这个地址的值取出来,赋给改变后p所指向的地址的值,这就实现了更改值的操作。
再说明P++的地址==p原来指向的地址+类型所占字节数*1
如果是*p+n(n是整数)的意思是p原来指向地址+类型所占字节数*n所在地址存放的值
不懂可以继续问

这里的p,q指针应该分别指向了两个不同的数组或者字符串,实现的功能是将p指针指向的元素值赋给q指针指向的元素值,在执行了赋值操作后,p、q指针各向后移动一位

把指针p指向的目标内容赋给指针q指向的目标(变量),然后指针q增1(加一个目标类型所需的字节数),指针p增1(加一个目标类型所需的字节数)。


C语言,谁能告诉我为什么这样输出结果是16?谢谢
a[i]);printf("\\n");return 0;}你这样i会一直减到-1时退出for循环,再执行printf("%d ",a[i]);因为for循环不加{}括号默认只能控制一条语句,printf("%d ",a[i]);中a[-1]在这个程序中是不存在的,

一个很简单的C语言。谁能告诉我一下步骤怎么算
程序如下:include "stdio.h"main(){int x=8;x+=x-=x*x;printf("%d",x);} 分析:自右向左算:x-=x*x;X值为-56;后面x+=x值为-112 看我都帮你打出来了,给我加点分吧!十分盼望你的红旗

,c语言,谁能告诉我*q++=*P++含义,
q就是指向这个地址的. 你访问*q的时候它一下子就指到了a的门牌号,所以你看到的就是a里面的东西;如果a=5; p=&a; 那么 *p=5;++就是自加的意思a++;就是a=a+1 ;我想你应该是看错了或者打错了吧。应该是*(q++)=*(P++);才对的吧?

初学C,谁能告诉我该怎么开始学?有点无处下手的感觉!
开始用一周左右的时间熟悉C的语句、语法和关键字。然后找一个高手(不是软件公司的那种商业代码,质量太差)写的大程序(代码在5000行以上,turbo c中的那个电子表格程序可以考虑,好像叫作tcalc,时间太长记不清了),把这个程序一边阅读理解一边输入电脑进行调试,等程序调通,再给程序改改功能,增加...

谁能告诉我什么叫C语言?具体点,谢谢啦
首先:C语言是C语言 是面向过程的语言;而C++是面向对象的语言,两者不同,但是C++是从C演变过来的,所以有了C的基础对C++会有帮助。首先:C语言入门相对比较简单,但如果想成为一个优秀的C程序员,需要很艰苦的训练,多读代码,多练习,多上机操作,多思考,学习是一件辛苦的事情,要放弃很多东西,要坚持...

谁能告诉我C语言中的各种运算符有哪些,都是干什么用的,要详细,拜谢了...
关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、...

c语言是谁发明的\/
C语言的祖先是BCPL语言。 1967年,剑桥大学的Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。 1970年,美国贝尔实验室的Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。 在...

C语言,谁能告诉我为什么输入的值和输出的值不一样,是软件的问题吗...
输入时在两个数之间加一个"."——因为你在%ld和%d之间写了个".",就不能再只用' '分开了。

c语言小程序问题:谁能告诉我为什么这个程序在输入1 3 2后还要输入\\n...
void exchange(int * p1,int * p2,int * p3);int *p1,*p2,*p3,a,b,c;scanf("%d %d %d",&a,&b,&c);p1 = &a;p2 = &b;p3 = &c;printf("a = %d,b = %d,c = %d \\n ",a,b,c);exchange(p1,p2,p3);printf("max = %d\\n mid = %d\\n min = %d\\n",*p1,*p2...

谁能告诉我C语言头文件math.h中所有的函数及使用方法。。。
1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI\/2,PI\/2]double acos (double); 结果介于[0,PI]double atan (double); 反正切(主值),结果介于[-PI\/2,PI\/2]double atan2 (double,double); 反正切...

苍南县19827475141: C语言中,*p++=*q++什么意思 -
茶云优普: 双目运算符“++”的运算级别是高于“*”的,所以先执行++. 那两楼都说的不够详细,还要看指针变量p和q的类型,比如说是int类型(占四个字节) 假设q存储的地址是100,那执行q++后所指向的地址就是104(并不是101,要注意这一点)(p++类似,不再说明) 再把104这个地址的值取出来,赋给改变后p所指向的地址的值,这就实现了更改值的操作. 再说明P++的地址==p原来指向的地址+类型所占字节数*1 如果是*p+n(n是整数)的意思是p原来指向地址+类型所占字节数*n所在地址存放的值

苍南县19827475141: C语言中*p++ = *q++ 怎么理解? -
茶云优普: 这是个赋值表达式."q++"是把q指针变量所指向的内存空间地址自加一个“内存单元”(如果这个指针变量的类型是int类型,那么q自加“一个内存单元”就是增加两个字节),取当前所指内存中的数值(即是,*q++)存储给P当前所指向的内存地址空间,再自加一个"内存单元",最后再取该空间的值作为整个表达式的值的逻辑值.实际就是:找地址→取值→赋值给指定内存→再把值取出来作为表达式的逻辑值.个人建议:实践是检验真理的唯一标准.像这样拿不准的代码,用一个实例来检验是最好不过的了.

苍南县19827475141: C语言中,*P=*Q,*P=&Q,*P=Q有什么区别? -
茶云优普: *p=*q是把q指针所指向地址里存放的数值赋给p指针指向的地址,简单说就是把q指向的变量里的值赋给p指针指向的变量 *P= &Q 是错的除非是在定义的时候可以.int *p=&q; *p=q啥也不是.

苍南县19827475141: 关于C语言指针变量*p++ 、*(p++)、(*p)++的区别 -
茶云优普: *p++ 由于++和*同优级,是自右向左的结合方向*(p++),因此等价于*(p++);他们的作用是得到P指向的变量值(*P),然后P +1=》P (*q)++,是先取P指向的变量值,然后其值再加一;

苍南县19827475141: c语言中*p 丨丨*q是啥意思 -
茶云优普: *p 丨丨*q 首先这里p和q均为指针,可以为int、short int、char等数值类型. 然后*p 和*q分别为p、q两个指针所指向的内容,这里设*p=m *q=n(假设为int型). 则*p 丨丨*q为一个逻辑或语句,几m||n,其真值(逻辑结果): m或者n有一个不为0,则结果为真 否则结果为假

苍南县19827475141: c语言中*s++=*p是什么意思 -
茶云优普: 这个就是看运算符优先级, ++运算符最高,接着是*运算符,接着是=运算符. ++是后置运算,先不管,*是对指针指向地址取内容, 所以就是右边p指针指向的内容赋值到左边s指针指向的内容,这个...

苍南县19827475141: C语言中指针的指真如**q=&p怎么解释啊? -
茶云优普: 参考答案:我是这样认为的:*是指针运算符.我们曾可以这样去定义:int a[10],*p,**s; 如果在下面的语句中出现了*p=a; 这就意味着指针p已经指向数组的首地址,也就是a[0], 此时我们可认为指针p是一级指针. 如果在下面的语句中出现了*s=p, 这就意味着指针s指向了p的单元,而p指向了a[0] 此时s离数组的首地址形象的像隔了2级 因此称s为2级指针. 对于2级指针,有**s=*(*s)=*p=&a[0]

苍南县19827475141: C语言,指针一块的内容 *++P *P++ 分别是什么意思啊? -
茶云优普: 首先,*和++的优先级相同,是右结合运算符.所以*++p等价于*(++p)*p++等价于*(p++) 因此*++p就是试p的值先加一,然后取其所指向的内容.*p++就是先取p指向的内容,然后p的值加一 这里的加一不是简单的数字加一,是和p的类型有关.如果p是整形的指针变量,则p的值在16位机上加了2,而在32位机上加了4.就是p的值增加了一个他的类型长度.等价于p+sizeof(*p).是的,下面朋友说的对,当时没注意.应该等价于p+sizeof(*p).希望给予采纳!

苍南县19827475141: C语言 int a[]={1,3,5,7,9},b[4]={2,4,6,8},*p=a,*q=b; p+=2;q++; *p=(*q)%3+5; *(++q)=*(p - )-3;_
茶云优普: int a[ ]={0,1,2,3,4,5,6,7,8,9}:意思是a数组为包含{0,1,2,3,4,5,6,7,8,9}的整数数组, int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a:p是等效于a的整数指针,你应该这样读int *p =a;(*号跟着变量走)定义了一个指针等于a数组首地址.

苍南县19827475141: 【C 语言】指针运算中.*(p++)和(*p)++有什么区别 -
茶云优普: 可以把指针看做数组 *p 相当于 P[0 ] ;//第0 个元素的值; *(p++) 也就相当于 P[1]; // [ ] 中加1; (*p)++; 相当于 P[0]++; //值加1; 自己体会一下、 越向上学习编程,就越要能把问题抽像化,我这个比方不是很恰当,但很方便理解.

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