C++指针学习

声明:所有代码都经过测试,请勿怀疑!

指针基础

指针定义

指针与一维数组

直接上代码

int a[]={97,32,120};
//定义指针指向数组的第一个值,两种方式
int *p1;
int *p2;
//1、将第一个数组地址赋值
p1=&a[0];
//未定义时
//int *p1=&a[0];

//2、直接赋值,只针对数组
p2=a;
//若想赋值第二个元素
//p2=a+1;

//寻找第一个值并加1的到 98
cout<<*p1+1;
//同
cout<<*a+1;
cout<<a[0]+1;
cout<<p1[0]+1;
cout<<p2[0]+1;
//寻找第2个值得到 32
cout<<*(p2+1);

心法
针对数组指针的两种赋值方法
指针和指向数组的指针都可以用 *()[] 取值
不同点:
数组不能进行加减操作及数组首地址不可变,而数组指针可以。

指针与数组的常用方法

	char msg[] = "人生就是吃饭、睡觉、赚钱!";
	char *p_msg;
	int i;
	//对pmsg赋值数组,循环输出首位,直到无字符时寻址失败返回。
	for (p_msg = msg; *p_msg; p_msg++)
		cout << *p_msg;
	cout << endl;
	//同理将*p_msg 替换为p_msg [0]
	for (p_msg = msg; p_msg [0]; p_msg ++)
		cout << *p_msg ;
	cout << endl;

	//对pmsg赋值数组,循环输出第i位,直到无字符时寻址失败返回。
	for (i = 0, p_msg = msg; *(p_msg + i); i++)
		cout << *(p_msg + i);
	cout << endl;
	//同理将*(p_msg +i)替换为p_msg [i]
	for (i = 0, p_msg = msg; p_msg[i]; i++)
		cout << p_msg[i];
	cout << endl;

	//对msg数组循环输出值,直到无字符时取值失败返回。
	for (i = 0; msg[i]; i++)
		cout << msg[i];
	cout << endl;
	//同理将msg[i]替换为*(msg+i)
	for (i = 0; *(msg + i); i++)
		cout << *(msg + i);
	cout << endl;

指针与结构体

	//定义一个信息结构体
	struct INFOStruct
	{
		char name[10];
		int age;
	};
	//实例化结构体数组
	INFOStruct info[]=
	{
		{ "刘二",20 },
		{ "张三",30 },
		{ "李四",40 },
		{ "王重阳",99 }
	};
	//定义结构体指针
	INFOStruct *p_info;
	p_info = info;
	//p_info = &info[0];
	//取值操作,类似数组
	for (int i = 0; i < 4; i++)
	{
		cout << "姓名:" << p_info->name << "  " << "年龄:" << p_info->age << endl;
		p_info++;
	}
发布了2 篇原创文章 · 获赞 0 · 访问量 35
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览