指针_基本概念

一段源代码,要说的在注释里写了

指针变量前面 的“*”表示 该变量的类型 为指针型变量。(引自P223,谭浩强《C程序设计》第四版)这句话让我明白了指针一直混淆的两种声明方式(详见代码注释)


#include <stdio.h>
void main()
{
	int a = 100;

	//指针变量前面 的“*”表示 该变量的类型 为指针型变量。【所以不应是int* p】(引自P223,谭浩强《C程序设计》第四版)
	int *p1;//定义性声明
	p1 = &a;
	printf("a=%d \n", *p1);

	int *p2 = &a;//引用性声明
	printf("a=%d \n", *p2);
	//以上,有了基本类型,才能由定义开辟出相应的空间(比如int型)

	int *p;
	//*p = 100;//指针变量中只能存放地址【其实这是个野指针】(引自P224)注释掉,不然会报错
	p = &a;
	*p = 1;//将整数赋给p当前所指的变量
	printf("a=%d \n", *p);
	printf("a的地址=%o \n", p);//以八进制输出地址

	printf("p的地址=%o \n", &p);//取地址运算符&。访问 p指针变量的地址
	printf("p所存的东西=%d \n", *p);//直接访问运算符*。访问 p指针变量 所存的地址 地址里所存的东西 并以%d形输出
	printf("p地址&p=%o里是a的地址&a=%o(p=%o)里存着值*p=%d\n",&p,&a,p,*p);

	int *temp;
	//*temp = *p;//注释防错
	/*野指针 对*temp赋值是向一个未知的存储单元赋值【temp没具体位置】,
	而这个未知单元可能存着一个有用的数据,从而可能破坏系统正常工作状况(P227)*/

}


来看看我用visio画的解释图吧~

变量有:变量名变量地址变量存的同变量格式一样格式的内容


指针就是地址,最坚实基础实在的玩意,用指针(也就是地址)就可以非常自由的访问数据,比如我就能用**&p访问*p(虽然平时不可能这么用)。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超自然祈祷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值