当前位置:首页 > C++目录 > 正文内容

指针(一):基础用法

亿万年的星光5年前 (2021-08-08)C++目录3064

1.定义

什么是指针,简单来说:“指针就是地址”。


2.指针变量的定义

指针变量定义形式:  类型说明符  *变量名

其中,*号表示指针变量。变量名即为定义的指针变量名,类型说明符表示该指针变量所指向的变量的数据类型。

普通变量:int a=5;

解释:定义了变量a,是int型的,值为5。内存中有一块内存空间是放a的值。对a的存取操作就是直接到这个内存空间存取。内存空间的位置叫地址,存放5的地址可以用取地址操作。用“&”符号运算得到。即&a;

指针变量:int *p=NULL;

解释:定义了一个指针变量p,p指向一个内存空间,里面存放的是一个内存地址。现在赋值为null(其实就是0,表示特殊的空地址)

比较通俗一点的解释,对于普通变量来说,a是一个int型变量,a的值的5。p是一个int *型变量,p的值是null。

3.指针变量的赋值与操作


#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	int a=3;
	int *p=NULL;
	cout<<"a的值"<<a<<endl;  //3
	cout<<"p的值"<<p<<endl;  //0
	cout<<"*p的值"<<*p<<endl; //程序报错 
	return 0;
}


将指针变量指向一个地址后:

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	int a=3;
	int *p=NULL;
	p=&a;
	cout<<"a的值"<<a<<endl;  //3
	cout<<"p的值"<<p<<endl;  //0x22fe34 
	cout<<"*p的值"<<*p<<endl; //3
	return 0;
}

可以看到p这个变量(int *类型)存储的是地址变量,不是普通的数值变量,所以p本身也是一个变量只不过存储的是地址而已。

将指针变量赋值后:

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	int a=3;
	int *p=&a;
	cout<<"a的值"<<a<<endl;  //3
	cout<<"p的值"<<p<<endl;  //0x22fe34 
	cout<<"*p的值"<<*p<<endl; //3
	*p=6;
	cout<<"a的值"<<a<<endl;  //6
	cout<<"p的值"<<p<<endl;  //0x22fe34 
	cout<<"*p的值"<<*p<<endl; //6
	return 0;
}

将指针变量指向一个新地址后:

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	int a=3;
	int *p=NULL;
	p=&a;
	cout<<"a的值"<<a<<endl;  //3
	cout<<"p的值"<<p<<endl;  //0x22fe34 
	cout<<"*p的值"<<*p<<endl; //3
	int b=10;
   	p=&b;
	cout<<"a的值"<<a<<endl;  //3
	cout<<"b的值"<<b<<endl; //10 
	cout<<"p的值"<<p<<endl;  //0x22fe00
	cout<<"*p的值"<<*p<<endl; //10
	return 0;
}



    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    C++中的溢出

    一、编程中的溢出   溢出是C++语言中最常见的漏洞。最常见的溢出包括数组溢出、数溢出、缓冲区溢出、指针溢出以及栈溢出。二、数组溢出    ...

    C++中的逻辑与运算

    样例#include<iostream> using namespace std; int main(){ cout<<(1&1)...

    【数据结构】栈—括号匹配检验

    【数据结构】栈—括号匹配检验

    【题目描述】假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[  (  [  ] [  ] ) ] 等为正确的匹配,[&nbs...

    【STL】二分查找函数(算法)—binary_search

    【说明】binary_search() 实现了一个二分查找算法。它会在前两个参数指定范围内搜索等同于第三个参数的元素。指定范围的迭代器必须是正向迭代器而且元素必须可以使用 < 运算符来比较。这个...

    最小生成树—Prim(普里姆)算法

    最小生成树—Prim(普里姆)算法

    一、算法概述Prim 算法是一种用于求解加权无向连通图的最小生成树(MST) 的贪心算法。它从一个顶点开始,逐步扩展生成树,每次选择连接已选顶点集和未选顶点集的最小权重边。二、算法思想初始化:从任意顶...

    【题解】围圈报数(约瑟夫问题)

    【题解】围圈报数(约瑟夫问题)

    【题目描述】有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个热呢又出列,... ,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,......