[传智播客]C++基础视频(深入浅出版)C语言提高-指针知识体系搭建

指针的强化

规律一:指针是一种数据类型

1) 指针也是一种变量,占有内存空间,用来保存内存地址,4个字节。

//测试指针变量占有内存空间大小
void mai()
{
	int a = 10;
	char *p1 = 100;  //分配4个字节的内存
	char ****p2 = 100;
	printf("a:%d , p1:%d , p2:%d\n",sizeof(a),sizeof(p1),sizeof(p2));
	//输出结果  a:2 , p1:4 , p2:4	
}

2) 指针操作内存
1.在指针声明时,*号表示所声明的变量为指针
2.在指针使用时,*号表示 操作 指针所指向的内存空间中的值
3.*p相当于通过地址(p变量的值)找到一块内存;然后操作内存
4.*p放在等号的左边赋值(给内存赋值)
5.*p放在等号的右边取值(从内存获取值)

	int *p3 = NULL;
	p3 = &a;
	*p3 = 20; //间接的修改a的值
	//*就像一把钥匙 通过一个地址(&a),去修改a变量的标示的内存空间
	int c = 0;
	c = *p3;  //c=20
	//*p放在=号左边 写内存
	//*p放=号的右边 读内存
	printf("c:%d \n", c);  //c:20

3) 指针变量和它指向的内存块是两个不同的概念
含义1: 给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容,与内存空间没有关系;p = p +1; //p++
不断的给指针赋值,相当于不停的改变指针的指向
含义2: 给p赋值p=‘a’; 不会改变指针变量的值,只会改变所指的内存块的值
含义3: =左边p 表示 给内存赋值, =右边p 表示取值 含义不同!
含义4: =左边char *p
含义5: 保证所指的内存块能修改
4)指针是一种数据类型,是指它指向的内存空间的数据类型
含义1:指针步长(p++),根据所致内存空间的数据类型来确定
p++=(unsigned char )p+sizeof(a);
结论:指针的步长,根据所指内存空间类型来定。

注意: 建立指针指向谁,就把把谁的地址赋值给指针。图和代码和二为一。
不断的给指针变量赋值,就是不断的改变指针变量(和所指向内存空间没有任何关系)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值