两个相同的指针变量能不能相加!为什么?

作者&投稿:叔虞 (若有异议请与网页底部的电邮联系)
两个相同类型的指针变量能不能相加,为什么?~

两个指针相加,没有意义。就好像宾馆房号一样,两个房号相加,没有意义,但房号可以加上一个整数,你住在 601 房间,我的房间标号比你的大5。

因为指针变量所对应的是地址,而整数是存放在某个地址上的内容。二者不一样。
对于指针变量如何程序:
int _integer = 0;int * _pinteger = &_integer; //&为求地址运算符, 指针用来保存一些变量的地址可以这样访问(*_pinteger) 得到 _pinteger这个整形指针里面的值0;
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等, 在第二章中已有详细的介绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

两个相同类型的指针不能直接相加的原因是编译器里面不允许出现这种操作。

不知道说的是什么语言,指针操作是一个比较复杂的范畴,一定要在这一块多花点功夫,对后面很有好处的。
1、所有的有效指针都是一个正整数(0可以被用来定义无效指针,小于0的只能叫非法指针),这个值代表了内存中的某个地址,内存可以理解为一把尺子,上面的刻度就是内存的地址,最小刻度一毫米可以理解为那就是一个字节)。指针的类型定义只是指明了他指向的那个地址段是保存的什么样的数据而已,假设是一个4字节的数据,那么指针的值只是表示开始位置,后面连续的4个字节或刻度的地方,都用来放这个数据。
2、两个类型相同的指针相加毫无意义。比如p1和p2都是类型为int的指针,虽然他们指向的内存中保存了两个int数N1和N2,但是这两个数在内存中可能挨着,也可以能间隔很远,甚至有可能是一个地方。假设p1值也就是N1位置起始值为1234,P2为2345,这个时候如果直接相加得到的数据3589有可能已经超出了内存最大值或者指向某个无意义的内存地址,所以指针相加没有意义可言。正确的应该是N1和N2相加才是合理的算数运算。
3、指针可以相减,可以和立即数加或减,是有意义的,是允许的。比如我想知道N1和N2之间到底间隔了多少字节的内存,两者相减就相当于尺子上两个刻度相减,也就是长度或者宽度了。另外,和立即数的加减主要用来快速寻址,比如我有一个数组,起始指针为P0,如果数组保存的是一系列INT值,那么 P0+2*sizeof(int)得到的值就是第三个元素的所在位置的地址,也是一个指针,是有意义的(因为不同的语言和系统,int值每次所占的字节数可能不一致,所以使用sizeof函数去求得而不是直接加常规的4)。
4、指针不仅可以指向简单数据,也可以指向复杂的数据块或者组合的类型,总之一个类型的指针的值所表示的意义就是这种类型的数据在内存中说占的位置的起点,这只是一个刻度,具体占多宽要根据具体类型来定。指针的操作最容易犯的错误就是:越界、非法指针、指向的数据不是想要的起始位置而是中间位置、指针的值和其指向的值分不清这些。

指针相加没有意义。好比你数学考50分,把你同学考60,你们相减是你们的差距,指针是移动地址,你们相加指的是什么呢?


指针变量可以指向指针变量吗
指针变量就是说指针啊,当你int a=5; 然后 int *p=&a; 那么a和p都是变量,a是整型,p是指针类型,a里面存的是数值5,p里面存的是a的内存地址。其实都是变量。define NULL 0 的意思是把 NULL 替代为0,编译器在编译的时候把你代码里所有的NULL替代为数字0; 你光#define NULL只是声明一个...

指针变量的基本运算有哪些
首先,指针变量可以加减,但只能与整型数据加减。加减的含义并不是其地址值进行了加减,而是与指针指向的数据类型相关联的。例如,如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x20000002,而是0x20000008,因为p指向的是一个整型数据类型,所以p+2表示p在内存中前移两个int的距离。同样,...

设指针变量p1、 p2已经指向同一个数组的元素,则下列表达式中错误的是...
【答案】:D 教材中关于指向同一个数组的元素的指针变量之间可以进行的运算有如下的规定:可以进行关系运算、赋值运算、减法运算,所以本题答案应选D。

多文件中的不同函数可以定义相同的指针变量吗?
链接器允许有类型和名称相同的对象,但要在不同的作用域中,否则会违反唯一定义原则,无法分辨具体应该用哪个对象进行链接。因此,不能是全局对象。局部对象的定义域是明确的,在不同的函数中可以有不同的同名同类型局部对象(包括参数)。解决方法 1.在一个编译单元(例如.cpp文件)中定义全局对象,在...

设p1和p2是指向同一个字符串的指针变量
答案是b p2已经是指针变量了,无法赋值为别的形式.

设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行...
A项 *(取内容符) 将p1 p2指向的变量的值的和赋给c是可以的。B项 c是字符变量 p2是指针变量 ,指针变量只能付地址 改为p2=&c是可以的。C项 指针就是地址p1 和p2是可以相互赋值的。D项 是取其内容运算不是指针运算,是对的 指针是不能相加的 ,没有意义的。只有大小比较和相减运算。

基类型相同的指针变量不能进行运算的运算符为什么是“+”?“-”为什 ...
“-”得到的结果是两个指针值(内存地址)的差距,而相加的话,得到的东西没有意义

指针变量用于存储什么,定义一个指向char变量的指针pc的语句是什么?
指针变量用于存储内存地址,它可以指向其他变量或对象的地址,而不是直接存储变量的值。定义一个指向char变量的指针pc的语句如下:这样的语句声明了一个指针变量pc,它可以指向一个char类型的变量。在使用指针pc之前,需要为其赋予一个有效的内存地址,否则会导致未定义行为。通常,可以通过将指针指向一个...

对于基类型相同的两个指针变量之间,为什么不能进行加法运算
指针只能+整型不能加指针

p,*p,(*p),*(*p) ,这些都表示什么意思?有什么区别,&p,(&p),&(&p...
p:普通变量名。p的含义:p是一个指针型变量,它存放一个变量的地址。(*p):与*p相同。(*p)::p是一个指针型变量,它存放一个地址,在这个地址中存放着变量的地址。通常,我们把p称为“指向指针的指针”。&p:变量p的地址。(*p):=&p。&(&p):无意义。

工布江达县13910699807: 两个相同类型的指针变量能不能相加,为什么? -
钟离豪盐酸:[答案] 两个指针相加,没有意义.就好像宾馆房号一样,两个房号相加,没有意义,但房号可以加上一个整数,你住在 601 房间,我的房间标号比你的大5.

工布江达县13910699807: 两个相同类型的指针变量可以做相加减运算吗? -
钟离豪盐酸:[答案] C, 两个指针相加是没有意义

工布江达县13910699807: 两个相同的指针变量能不能相加!为什么? -
钟离豪盐酸: 指针相加没有意义.好比你数学考50分,把你同学考60,你们相减是你们的差距,指针是移动地址,你们相加指的是什么呢?

工布江达县13910699807: c语言中指针变量可以相加吗?其含义是什么? -
钟离豪盐酸: 指针指向数组元素时,可以对指针进行以下运算:加一个整数(用+或+=),减一个整数(用-或-=),自加运算,如p++,++p\自减运算,如p--,--p两个指针相减,只有p1和p2都指向同一数组中的元素时才有意义).

工布江达县13910699807: 对于类型相同的两个指针变量之间,不能进行的运算是符号是? -
钟离豪盐酸: 类型相同的两个指针变量不能进行加法运算,但能进行减法运算.还能用'<'、'>'、'=='这三个运算符进行比较,主要用于判断指针指向数组元素的先后位置.

工布江达县13910699807: 两个指针变量不可以做什么? -
钟离豪盐酸: 不可以相加,两个指针的和无意义两个指针的比较是有意义的,这仅限于它们指向同一个数组中的元素时

工布江达县13910699807: C语言指针可以相加吗?为什么?拜托各位了 3Q -
钟离豪盐酸: 应该来说是不一样的 因为null是宏,虽然被定义为0,但是开发人员如果自己定义了null不为0 两者就不一样了 采纳哦

工布江达县13910699807: 即使数据类型相同,两个指针变量也不能相互赋值 是对是错 -
钟离豪盐酸: 应该能吧. int a, b; int *p1 = &a, *p2 = &b; p1 = p2; 这样可以吧

工布江达县13910699807: 在C语言中,两个类型相同的指针变量之间,不能进行的运算是?为什么????
钟离豪盐酸: + * / % 都可以 但没有意义 - = == != 等都经常用

工布江达县13910699807: c++题,求教对于类型相同的两个指针变量之间,不能进行的运算是_____A_____A、+B、C、=D、 - 为什么?加减是同等的啊,选A为什么不能选D呢 -
钟离豪盐酸:[答案] 如果两个指针变量指向同一个数组的元素,则两个指针变量之差是两个指针之间的元素个数. 而指针变量相加无实际意义,并且指针相加很可能到达不可预料的内存空间.

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