C++普通班升信奥班前必掌握内容1——《指针》

一,指针的定义创建赋值使用

1.定义
int a=10;
int *p;    //两种方式:int *p;    int* p;
p = &a;
2.创建和赋值
double b=1.5;
double* p1;	//指针变量的类型与要指向的变量数据类型保持一致
p1 = &b;	//先创建,再赋值
int c=10;
int *p2 = &c;	//创建时赋值
int d=10,e=20;
int *p3=&d,*p4=&e;	//连续创建多个
3.使用

①:指针变量能指向任何数据类型(int、double、bool、char、数组、结构体······),也能指向指针变量。

int f=100;
int *p5=&f;
int *p6=p5;
cout<<p5<<' '<<p6<<endl;
cout<<*p5<<' '<<*p6<<endl;

②:通过指针可以找到数据在内存中的位置

cout<<p<<endl;	//0x6ffe14,指针变量保存的是地址!

③:通过指针运算符 * ,获取指针所指向的变量的值

cout<<*p<<endl;	//10

④:修改数据、输出数

*p=20;				 //p 等同于 &a	表示变量a的地址
cout<<*p<<endl;	//20  *p 等同于 a	表示变量a代表的内存中的数据
cout<<a<<endl; 	//20  *p=20 等同于 a=20	表示对变量赋值

二,指针数组

一组指针变量的数据

int *p8[5];	//p8指针数组变量名称	5指针个数。数组中的5个元素,都是指向 int 的指针!
	
int arr[5]={1, 2, 3, 4, 5};	//创建整型数组arr
for(int i=0; i<5; i++)	cout<<arr[i]<<endl;
	
int *p7=&arr[0];	//创建指针变量p11指向第一个元素的地址 
*p7=100;	//修改数据
for(int i=0; i<5; i++)	cout<<arr[i]<<endl;
	
int *p8[5];	//创建指针数组p12
for(int i=0; i<5; i++){
	p8[i]=&arr[i];	//给数组元素依次赋值为arr中每个元素的地址 
	cout<<*p8[i]<<endl;	//访问每个指针指向的数据
} 

三,结构体指针

指向结构体变量地址的指针,称为结构体指针。

//结构体指针 	访问成员变量格式: 指针名->成员变量名 
struct stu{
	int id;
	string name;
	double score;
};
	
stu g = {1,"燃燃",85.5};	//创建结构体变量g并初始化
stu *p9 = &g;				//创建指针变量并初始化 
cout<< p9->id << ' ' << p9->name << p9->score <<endl;
    //	1				燃燃		85.5										
p9->score = 99;
cout<< p9->score <<endl;	// 99

四,空指针

赋值为“NULL”或者“nullptr”的指针变量称为空指针,创建指针变量时不确定存储的地址。

//可以利用空指针进行分支判断
int *p10=NULL;
if(p10==NULL){
	cout<<"指针p10是空指针"<<endl;
}	
if(p10!=NULL){
	cout<<"指针p10不是空指针"<<endl;
}
	
//空指针创建 
int *p11 = NULL; //p11、p12称为空指针,NULL本质是0 表示一个空地址。
cout<<p11<<endl;	//0
cout<<*p11<<endl;//无法访问并退出程序。 
//int *p12 = nullptr;	//nullptr是C++新增的空指针表示方式
//cout<<p12<<endl;	//0
//cout<<*p12<<endl;//空指针指向的内存区域无法访问!

五,真题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值