精华内容
下载资源
问答
  • C++指针运算

    2020-12-23 09:07:45
    C++指针运算 指针变量加或减 一个整数 p++; p--; p+i; p-i; C++规定,一个指针变量加或减一个整数是将该指针变量的原值和它指向的变量所占用的内存单元字节数相加或相减。 C++指针变量赋值 将一个变量地址赋给一个...

    C++指针运算

    指针变量加或减 一个整数

    p++;
    p--;
    p+i;
    p-i;
    

    C++规定,一个指针变量加或减一个整数是将该指针变量的原值和它指向的变量所占用的内存单元字节数相加或相减。

    C++指针变量赋值

    将一个变量地址赋给一个指针变量。

    point=&array;//将变量array的地址赋给point
    point=array;//将数组array首元素的地址赋给point
    point=&array[1];//将数组array第1个元素的地址赋给point
    point=min;//将自定义min函数的入口地址赋给point
    point_1=point_2;//将同类型的指针变量point_2的值赋给point_1
    

    C++指针变量可以有空值

    即该指针变量不指向任 何变量,可以这样表示:

    point=NULL;
    

    实际上NULL代表整数0,也就是使point指向地址为0的单元,这样可以使指针不指向任何有效的单元。

    实际上系统已先定义了NULL:

    #define NULL 0
    

    在iostream头文件中就包括了以上的NULL定义, NULL是一个符号常量。

    读者应明白一点,point的值等于NULL和point未被赋值是两个不同的概念。

    C++两个指针变量可以相减

    如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数。

    C++两个指针变量比较

    若两个指针指向同一个数组的元素,则可以进行比较,指向前面的元素的指针变量小于指向后面元素的指针变量。

    C++使用指针的优缺点

    指针是C语言和C++的重要组成部分,使用指针的优点是:

    • 提高程序效率。
    • 在调用函数时,如果改变被调用函数中某 些变量的值,这些值能为主调函数使用,即可以通过函数的调用,得到多个可改变的值。
    • 可以实现 动态存储分配。

    使用指针的缺点是:

    • 指针使用实在太灵活,对不熟练的程序员来说,很容易出错,而且出现的错误很难发现。

    C++指针运算
    更多案例可以go公众号:C语言入门到精通

    展开全文
  • 本篇文章是对C++中输出指针自增(++)运算的示例进行了详细的分析介绍,需要的朋友参考下
  • C++ 指针的加减运算

    千次阅读 2017-04-06 09:26:03
    1:涉及到数组的指针,若两指针指向的不是同一个数组,那么指针之间的加减运算是无意义的,因为得到的结果就是他们地址之间的差值。 2:指针变量加/减 一个整数,例如:p++,p--,p+i,p-i,p+-i,p-=i等   C++规定...

    首先明确几点:

    1:涉及到数组的指针,若两指针指向的不是同一个数组,那么指针之间的加减运算是无意义的,因为得到的结果就是他们地址之间的差值。

    2:指针变量加/减 一个整数,例如:p++,p--,p+i,p-i,p+-i,p-=i等

          C++规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。如p+i代表这样的地址计算:p+i*d,d为p所指向的变量单元所占用的字节数。这样才能保证p+i指向p下面的第i个元素。

    3:指针变量赋值,将一个变量地址赋给一个指针变量

        p=&a;    //将变量a的地址赋给p
        p=array;    //将数组array首元素的地址赋给p
        p=&array[i];    //将数组array第i个元素的地址赋给p
        p=max;    //max为已定义的函数,将max的入口地址赋给p
        p1=p2;    //p1和p2都是同类型的指针变量,将p2的值赋给p1

    4:两个指针变量可以相减,如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数,假如p1指向a[1],p2指向a[4],则p2-p1=(a+4)-(a+1),但p1+p2,指针相加并无实际意义。

    5:两个指针变量比较,若两个指针指向同一个数组的元素,则可以进行比较。指向前面的元素的指针变量小于指向后面元素的指针变量


    下面通过一段程序进行说明:

    #include <iostream>
    using namespace std;
    
    int main(int argc,char** argv)
    {
    	int a = 2;
    	int b = 3;
    	int c[2] = {0,5};
    	int d[3] = {3,5,6};
    
    
    	//第三点
    	typedef int* int_ptr;
    	int_ptr p1,p2,p3,p4,p5,p6,p7;
    	p1 = &a;
    	p2 = &b;
    	p3 = &c[0];
    	p4 = c;
    	p7 = &c[1];
    	p5 = d;
    	p6 = &d[2];
    
    
    	
    	cout<<"p1:"<<p1<<endl;
    	cout<<"p2:"<<p2<<endl;
    	cout<<"p2-p1:"<<p2-p1<<endl;
    	
    	//第二点
    	cout<<"p4:"<<p4<<endl;
    	cout<<"p4+1:"<<p4+1<<endl;
    
    
    	//第四点
    	cout<<"p5:"<<p5<<endl;
    	cout<<"p6:"<<p6<<endl;
    	cout<<"d[p6-p5]:"<<d[p6-p5]<<endl;
    	cout<<"p6-p5:"<<p6-p5<<endl;
    
    
    	//第五点
    	cout<<"p3:"<<p3<<endl;
    	cout<<"p7:"<<p7<<endl;
    	cout<<"(p3>p7 ? 1:0):"<<(p3>p7 ? 1:0)<<endl;
    
    
    	//第一点
    	cout<<"p7-p6:"<<p7-p6<<endl;
    
    
    	cin.get();
    	return 0;
    }

    使用指针的优点是:
    1:提高程序效率;
    2:在调用函数时,如果改变被调用函数中某些变量的值,这些值能为主调函数使用,即可以通过函数的调用,得到多个可改变的值;
    3:可以实现动态存储分配。

    但是同时应该看到,指针使用实在太灵活,对熟练的程序人员来说,可以利用它编写出颇有特色的、质量优良的程序,实现许多用其他高级语言难以实现的功能,但也十分容易出错,而且这种错误往往难以发现。

    展开全文
  • 既然指针是一种数据类型,那么它也应该有对应的操作或运算,正如整数能做加减乘除一样。但是每一种操作或运算都应该对这种数据类型有意义。比如两个实数可以用关系运算得知哪个大哪个小,而两个虚数却不能使用关系...
  • 指针运算实际上是地址运算,但是指针运算又不同于地址运算 指针加1实际上所加的地址值不一定是1,而是该指针的类型所占内存的字节数 int型指针加1在32位机上,地址值被加4。 不同类型的指针加1时,地址值被加...
    /*
    指针运算实际上是地址运算,但是指针运算又不同于地址运算
    指针加1实际上所加的地址值不一定是1,而是该指针的类型所占内存的字节数
    int型指针加1在32位机上,地址值被加4。
    不同类型的指针加1时,地址值被加的字节数是不同的。
    */
    #include <iostream.h>
    void main(){
    int i,*pi1=&i,*pi2;
    double d,*pd1=&d,*pd2;
    pi2=pi1+1;
    pd2=pd1+1;
    cout<<pi2-pi1<<','<<pd2-pd1<<endl;
    //地址运算时要在指针名前面加上(int),表示强制成int型意思。
    cout<<(int)pi2-(int)pi1<<','<<(int)pd2-(int)pd1<<endl;
    }
    展开全文
  • C++漫谈指针运算

    万次阅读 2019-04-09 14:24:55
    C++漫谈指针运算 首先我问大家一个问题:指针为什么要有自己的类型? 前不久我也问过自己同样的问题,你想,既然指针存储的是一个地址,即一串十六进制的数字,那他完全可以没有类型,因为地址又不会有什么和数据...

    C++漫谈指针运算

    首先我们先提出一个问题:指针为什么要有自己的类型?

    前不久我也问过自己同样的问题,既然指针存储的是一个地址,即一串十六进制的数字,那他完全没必要有自己的类型,因为地址并不会有什么和数据类型有关的差异。那为什么还要有int类型指针,char类型指针这些呢,后来联想到指针运算才想明白这个问题。那么,什么是指针运算呢?

    指针作为一个变量当然也可以进行运算,但是他的运算方式与普通运算不同,我们先来看一个例子:

    #include <iostream>
    
    int main(void)
    {
        int a = 6;
        int *pointer = &a;
        std::cout << "地址1:" << pointer << std::endl;
        std::cout << "地址2:" << (pointer + 1) << std::endl;
        return 0;
    }
    

    运行这段代码查看输出结果,你会发现两个地址的差值是4个字节,正好是一个int类型占的字节数。这两者有什么联系吗?为什么不是一个字节而四个字节呢?是因为在指针运算中,编译器是根据指针的类型来进行加减运算,也就是说,加减的字节数将与指针的类型进行绑定。比如,如果我们把一个指向char类型的指针进行加一操作,地址的变化将会是一个字节,这正好就是一个char类型所占的字节数。

    以int举例,指针的加减运算可以理解为:指针加1,就是下一个int类型变量的首地址;指针加2,就是下下一个int类型变量的首地址;指针减1,就是上一个int类型变量的首地址;指针减2,就是上上一个int类型变量的首地址;以此类推。是不是很好理解呢?

    如果理解的话我们再来看一个例子:

    #include <iostream>
    using namespace std;
    
    int main() {
    	int m[5] = { 1, 2, 3, 4, 5 };
    	int* p = m;
    	for (int i = 0; i < 5; i++) {
    		cout << *(p + i) << endl;
    	}
    }
    

    如此一来我们就可以用指针来遍历一个数组,有一点要注意的是,这里的数组名m实际上是数组第一个元素的地址,即数组的首指针,因此我们才可以将他的值赋值给指针p,完成下面的指针运算。

    我们再回到文章开头的那个问题,现在大家心里应该有了答案了吧。指针的类型使得所有数据类型的指针运算全部统一起来,无论是什么数据类型,指针+1都是指下一个元素的地址,这种特性使得我们在进行指针运算的时候没有必要再考虑这个数据类型占几个字节,大大简化了编写代码的过程,降低了错误率。

    2019年4月9日

    展开全文
  • int a; int *p = &a; p += 1; *p = 8;
  • 指针运算&和* 下面这个图总结了&和*号运算的所有使用场景。 指针的初始化 空指针的值为NULL,也就是0 第四条画叉部分,会编译报错,因为需要把整数类型强制类型转换为指针类型 auto指针类型 指针的运算 ...
  • C++指针精髓

    2019-01-21 08:41:43
    要了解指针,多多少少会出现一些比较复杂的类型,其实要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,其原则: 从变量名处起,根据运算符优先级结合...
  • 【c/c++指针运算

    2015-12-22 11:07:03
    指针变量可以进行某些运算,但运算的种类是有限的,它只能进行赋值运算、部分算术运算和关系运算指针运算符 指针运算符有两种: 取地址运算符&:& 是单目运算符,其结合性为自右至左,功能是取变量的地址...
  • c++指针加减运算

    2019-09-25 17:27:38
    c++指针加减运算 1. 给一个指向数组的某个指针加减一个整数n,新得到的还是指针,新指针指向的元素相比之前前进(后退)了n个位置。当然,前提是加减整数的新指针仍需指向同一数组的其他元素,或者指向同一数组的尾...
  • Golang指针和C++指针的简单剖析

    热门讨论 2021-04-04 20:39:22
    不止C++才有指针,Golang也有指针呦!二者有哪些区别呢?今天就来看一看。 正文 什么是指针指针是用来指向任何一个变量的内存地址的类型,它所指向的变量的内存地址在 32 和 64 位机器上分别占用 4 或 8 ...
  • c++中的指针可以理解为一个地址的值,这个值是用数值来表示的。 因此可以对其执行算术运算。可以对指针进行四种算术运算:++,--,+,- 递增一个指针  程序中可以用指针代替数组,因为变量指针可以递增,而数组不能...
  • C++指针详解

    万次阅读 多人点赞 2018-12-08 22:55:09
    有好的一面,必然会有坏的一面,指针的灵活导致了它的难以控制,所以C/C++程序员的很多bug是基于指针问题上的。今天就对指针进行详细的整理。 1、指针是什么? 指针是“指向(point to)”另外一种类型的复合类型...
  • c++指针的符号运算

    2016-11-19 17:35:34
    指针是一个用数值表示的地址,因此,用户可以对指针执行算数运算,可以对指针进行四种算术运算,++,--,+,- 假设ptr是一个指向地址1000的整型指针,是一个32位的整数,让我们对该指针执行下列的算数运算 ptr++ ...
  • 一、指针的算术运算 指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。例如: 例二: char a[20]; int *ptr=(int *)a; //强制...
  • 前言忘记进制的同学先看这里: 十进制数,没有前缀 二进制数,前缀是0b 八进制数,前缀是0o 十六进制数,前缀是0x let decimalInteger = 17 let binaryInteger = 0b10001 // 二进制的...运算通常用于二进制取位操作;
  • C++指针精髓 C++指针精髓- 1- 摘要- 2 - 第一节指针举例- 2 - 第二节细说指针- 5 - 1.1指针的类型- 5 - 2.指针所指向的类型- 6 - 3.指针的值或者叫指针所指向的内存区或地址- 6 - 4指针本身所占据的内存区- 7 - 第三...
  • C/C++指针是个什么鬼? 带着这个问题我们开始, 为什么只有C/C++ (Objective-C 也有指针,也就是C语言的面向对象版本, 所以Objective-C 与c/c++完全通用,oc项目直接添加.c/.cpp文件,这TM扯远了,有机会还是...
  • C++增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能,较指针参数来得更加安全直观。将引用作为参数传递的时候,实参初始化形参的时候不分配内存空间,也不调用拷贝构造函数,因此更加能够提高运算的...
  • C++ 指针实现矩阵相乘

    千次阅读 2020-04-15 20:55:46
    编写函数,使用指针传递和指针运算,实现两个矩阵的乘积。 编写主程序,输入两个矩阵,调用函数计算它们的乘积,在主函数中输出计算结果。每个矩阵的元素总个数不超过100,但行数、列数不定。矩阵元素为整数。 输入...
  • c++ 指针指针数组

    千次阅读 2017-09-16 01:19:38
    一、指针数值和数组指针 首先解释下指针数组及数组指针区别: 指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 数组指针:a pointer to an array,即指向数组的指针 int s[6] = {...
  • C++指针的强制类型转换

    千次阅读 2019-09-04 16:28:56
    强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 指针类型简介 c语言中,指针是就是内存地址,因此使用指针可以...
  • C++ 指针加减运算

    万次阅读 2016-05-13 11:41:28
    并且两个指针指向同一个数组,两个指针进行加减运算实际上是对数组中的元素进行加减或者比较运算的。 1) 指针变量加/减 一个整数 例如:p++,p--,p+i,p-i,p+-i,p-=i等。 C++规定,一个指针变量加/减一个整数是...
  • C++指针详细讲解

    千次阅读 多人点赞 2020-02-04 22:57:37
    详细讲解C++指针的原理以及应用,附加代码样例。
  • C++ 指针 学习 C++指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。 正如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,176
精华内容 41,270
关键字:

c++指针运算

c++ 订阅