指针和指针变量的理解:

#include<iostream>
using namespace std;
int main()
{
int n;
int * m;
m = &n;
n = ;
cout << "n=:" << n << endl;
*(int*)m = ;
cout << "*m:" << *m << endl;
cout << "n:" << n << endl;
cout << "&n: " << &n << endl;
cout << "m: " << m << endl;
system("pause");
return ;
}

指针:放的是其他普通变量在内存中的首地址。比如上面的代码,&n代表n的首地址,是个指针。&n还有个名字,叫做引用,n是个整型变量,整型变量这四个字只是个名词,它指代的是内存中一块连续地址,此例是4个字节的连续内存地址。地址是用整数表示的。

指针变量:存放其他变量地址的那个变量。比如上面代码中的m就是一个指针变量。

所以,指针是个首地址,是个整数,是个常量;指针变量是个变量。指针变量前面加个*号,意思是解引用,代表m所指向的那个普通变量的整型值。

int * m; //这句话中int *代表指向整型的指针,这样写是准备定义一个指针变量,m就是定义的指针变量,它用来存放其他普通变量的首地址。也可以这样理解:m是个指针变量,它的类型是整型指针类型。


再来一例:

#include<iostream>
using namespace std;
int main()
{
int a = ;
int b = ;
int *p1;
int* p2;
p1 = &a;
p2 = &b;
cout << "a的地址是:"<<&a<< endl;
cout << "b的地址是:" << &b << endl;
cout << "指针变量p1所指向的地址是:"<<p1 << endl;
cout << "指针变量p2所指向的地址是:" << p2 << endl;
system("pause");
return ; }

运行结果:

#include<iostream>
using namespace std;
int main()
{
int a = ;
int b = ;
int *p1;
int* p2;
p1 = &a;
p2 = &b;
cout << "a的地址是:"<<&a<< endl;
cout << "b的地址是:" << &b << endl;
cout << "指针变量p1所指向的地址是:"<<p1 << endl;
cout << "指针变量p2所指向的地址是:" << p2 << endl;
cout << "指针变量p1本身的地址是:" << &p1 << endl;
cout << "指针变量p2本身的地址是:" << &p2 << endl;
system("pause");
return ; }

运行结果:

可见,指针本身在内存中也有自己的地址。


C++中指针和指针变量的更多相关文章

  1. golang中值类型/指针类型的变量区别总结

    转自:https://segmentfault.com/a/1190000012329213 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string ...

  2. C/C++中的 if(指针变量) 和 if(!指针变量)

    目录 if(指针变量) 代码演示 if(指针变量) 解读代码 if(!指针变量) 解读代码 总结 替代方案.推荐写法!!!!! if(指针变量) 当把一个指针作为条件表达式时,所要判断的条件实际上就是 ...

  3. C++中引用与指针的区别(详细介绍)

    C++中引用与指针的区别(详细介绍) C++中的引用与指针的区别   指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一 ...

  4. Delphi中的函数指针判断是否为空

    delphi函数指针 只有@@p才代表了函数指针本身的地址   assigned(p) 判断是否为空 或者用 @p=nil 来判断函数指针是不是为空 Delphi中的函数指针实际上就是指针,只是在使用 ...

  5. js中的this指针(三)

    当一个函数并非一个对象的忏悔时,它会被当作一个函数来调用. 此时,函数中的 this 指针被绑定到了全局对象. 后果:方法不能利用内部函数来帮助工作,由于 this 被绑定了错误的值,将无法共享该方法 ...

  6. C++ 中引用与指针的区别

    1.引用只是变量的一个别名,并不占用内存空间,而指针是一个变量,里面保存着被指向的变量在内存中的地址: 2 引用只能在定义时被初始化一次,之后不可变,而指针可变: 3 引用没有 const,指针有 c ...

  7. [BS-21] 关于OC中对象与指针的思考

    关于OC中对象与指针的思考 1. 创建对象: OC中可通过代码Person *p = [[Person alloc] init];创建了一个对象p.该过程中内存情况为: 在当前线程的栈(默认1M)中, ...

  8. 深入认识JavaScript 中的this指针

    深入认识JavaScript 中的this指针this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象.在实现对象的方法时,可以使用this指针来获得该对象自身的引用.和传统意义的面向对象 ...

  9. C++中使用函数指针 【瓦特芯笔记】

         在C++类中使用函数指针. 类型定义:      typedef 返回类型(类名::*新类型)(参数表) //类定义 class CA { public: char lcFun(int a) ...

随机推荐

  1. SnakeYaml使用

    新的项目中需要将yaml文件解析为对象,调研了决定使用snakeYaml,下面看一看怎么使用. 一.引入依赖 因为项目是使用maven构建的,所以我们在pom文件中引入snakeYaml的依赖,如下: ...

  2. JDK/Java SE官方文档汇总

    JDK一般是指Java SE. 1.5:https://docs.oracle.com/javase/1.5.0/docs/ 6:https://docs.oracle.com/javase/6/do ...

  3. 利用NSString的Hash方法比较字符串

    实际编程总会涉及到比较两个字符串的内容,一般会用 [string1 isEqualsToString:string2] 来比较两个字符串是否一致.对于字符串的isEqualsToString方法,需要 ...

  4. hough变换检测直线和圆

    图像测量和机器视觉作业: 提取图像中的直线和点的位置坐标,将其按一定顺序编码存入一文本文件,并在原图像上叠加显示出来. 下午实验了一下: 程序环境:vs2013(活动平台为x64)+opencv3.1 ...

  5. POJ2503字典树

    此代码原始出处:http://blog.csdn.net/cnyali/article/details/47367403 #include<stdio.h> #include<str ...

  6. Name和:Name

    http://www.cnblogs.com/tianyutingxy/archive/2011/02/23/1962078.html http://www.tuicool.com/articles/ ...

  7. Qt5的插件机制(6)--开发Qt插件时几个重要的宏

    怎样开发Qt插件,能够在Qt Assistant 中搜索"Qt Plugins"或"How to Create Qt Plugins",看看那篇manual中的 ...

  8. MySQL 创始人:写代码比打游戏爽,程序员应多泡开源社区

     王练 发布于2017年09月04日 收藏 43   开源中国全球专享福利,云栖大会购票大返现!>>>   根据StackOverflow的最新调查,MySQL仍然是全世界最流行的数 ...

  9. 一起学android之怎样卸载指定的 应用程序(25)

    效果图例如以下: 代码例如以下: public class MainActivity extends Activity { private Button btn_delete; @Override p ...

  10. 图像处理之opencv---加减乘除运算cvdiv

    http://chyyeng.blog.163.com/blog/static/16918230201211632135456/