C++中指针和指针变量
指针和指针变量的理解:
#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++中指针和指针变量的更多相关文章
- golang中值类型/指针类型的变量区别总结
转自:https://segmentfault.com/a/1190000012329213 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string ...
- C/C++中的 if(指针变量) 和 if(!指针变量)
目录 if(指针变量) 代码演示 if(指针变量) 解读代码 if(!指针变量) 解读代码 总结 替代方案.推荐写法!!!!! if(指针变量) 当把一个指针作为条件表达式时,所要判断的条件实际上就是 ...
- C++中引用与指针的区别(详细介绍)
C++中引用与指针的区别(详细介绍) C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一 ...
- Delphi中的函数指针判断是否为空
delphi函数指针 只有@@p才代表了函数指针本身的地址 assigned(p) 判断是否为空 或者用 @p=nil 来判断函数指针是不是为空 Delphi中的函数指针实际上就是指针,只是在使用 ...
- js中的this指针(三)
当一个函数并非一个对象的忏悔时,它会被当作一个函数来调用. 此时,函数中的 this 指针被绑定到了全局对象. 后果:方法不能利用内部函数来帮助工作,由于 this 被绑定了错误的值,将无法共享该方法 ...
- C++ 中引用与指针的区别
1.引用只是变量的一个别名,并不占用内存空间,而指针是一个变量,里面保存着被指向的变量在内存中的地址: 2 引用只能在定义时被初始化一次,之后不可变,而指针可变: 3 引用没有 const,指针有 c ...
- [BS-21] 关于OC中对象与指针的思考
关于OC中对象与指针的思考 1. 创建对象: OC中可通过代码Person *p = [[Person alloc] init];创建了一个对象p.该过程中内存情况为: 在当前线程的栈(默认1M)中, ...
- 深入认识JavaScript 中的this指针
深入认识JavaScript 中的this指针this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象.在实现对象的方法时,可以使用this指针来获得该对象自身的引用.和传统意义的面向对象 ...
- C++中使用函数指针 【瓦特芯笔记】
在C++类中使用函数指针. 类型定义: typedef 返回类型(类名::*新类型)(参数表) //类定义 class CA { public: char lcFun(int a) ...
随机推荐
- Play框架连接Mysql遇到的一些问题
最近,在基于Play框架的项目中需要连接Mysql数据库.在这个过程中遇到了一些问题.在此,把它记录下来. 首先,Play框架和Mysql连接有两种方式,这两种方式都是在application.con ...
- IIS下安装memcached管理工具—MemAdmin
1.先看这篇文章 http://www.cnblogs.com/joylee/archive/2013/01/07/memadmin.html . 2.在IIS下安装的php-cgi.exe程序版本为 ...
- 【Tensorflow】tf.argmax函数
tf.argmax(input, axis=None, name=None, dimension=None) 此函数是对矩阵按行或列计算最大值 参数 input:输入Tensor axis:0表示 ...
- Direct2D教程(三)简单几何图形
从本章开始,我们介绍D2D几何图形. D2D图形分类 Direct2D支持多种类型的几何图形,包括Simple Geometry(简单几何图形) 矩形 圆角矩形 椭圆 Path Geometry(路径 ...
- 自己封装的CMusic类 【转】
http://www.cnblogs.com/zhangminaxiang/archive/2013/02/27/2936011.html 缘由: 在改正俄罗斯方块程序的功能的时候,想给这个程序增加一 ...
- C#中二进制,八进制,十六进制到十进制的相互转换
1.十进制数字向二进制,八进制,十六进制字符串的转换,使用函数 Convert.ToString(int value, int toBase): 它可以把一个数字转换为不同进制数值的字符串格式,其中t ...
- 百科知识 scm文件如何打开
用scplayer打开,目前有效的下载链接将是: http://download.csdn.net/download/kevingao/2686778
- 用C++设计一个不能被继承的类(转)
在Java 中定义了关键字final,被final修饰的类不能被继承. 首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数.同样,子类的析构函数也会自动调用父类的析构函数.要想一个类不能被 ...
- C语言-回溯例3
排列问题 1.实现排列A(n,m)对指定的正整数m,n(约定1<m<=n),具体实现排列A(n,m).2. 回溯算法设计设置一维数组a,a(i)(i=1,2,…,m)在1—n中取值.首先从 ...
- request 发送多层字典
a. 客户端向服务端发送多层字典的值 #客户端发送 obj = { 'data':{ "k1":"v1", "k2":"v2&qu ...