C杂讲 内存与指针

目录

知识点1【内存地址的概述】

知识点2【指针变量概念】

知识点3【定义指针变量】(重要)

 知识点4【指针变量的使用】

 知识点8【指针变量的类型】(重要)


知识点1【内存地址的概述】

系统给内存的每一个字节 分配一个编号 而这个编号 就是内存地址。

内存地址 也叫 指针。 指针 就是 地址 地址 就是 指针。

知识点2【指针变量概念】

指针变量:本质就是一个变量 只是这个变量 存放 是内存的地址编号(地址/指针)。

32位平台 任何类型的地址编号 都是4字节

 

知识点3【定义指针变量】(重要)

定义指针变量的步骤:

1、*修饰 指针变量名

2、保存啥类型变量的地址 就用该类型定义一个普通变量。

3、从上 往下 整体 替换

定义指针变量(前提)

1、明确保存 啥类型变量的地址。

案例:

void test02()
{
	//num拥有一个合法的空间
	int num = 10;

	//需求:请定义一个指针变量 保存num的地址
	//p就是指针变量 变量名为p 不是*p
	//在定义的时候:*修饰p 表示p为指针变量
	int *p;
 
	//建立p和num的关系:p保存num的地址
	printf("&num = %p\n",&num);
	p = #//&num 代表的是num变量起始地址(首地址)
	printf("p = %p\n", p);
}

运行结果:

 

 知识点4【指针变量的使用】

通过p 对所保存的地址空间 进行读写操作(重要)

 案例:

void test02()
{
	//num拥有一个合法的空间
	int num = 10;

	//需求:请定义一个指针变量 保存num的地址
	//p就是指针变量 变量名为p 不是*p
	//在定义的时候:*修饰p 表示p为指针变量
	int *p;


	//建立p和num的关系:p保存num的地址
	printf("&num = %p\n",&num);
	p = #//&num 代表的是num变量起始地址(首地址)
	printf("p = %p\n", p);

	//*p 等价 num
	printf("*p = %d\n", *p);//10==num

	//*p = 100
	*p = 100;//num = 100
	printf("num = %d\n", num);

	//scanf("%d", &num);
	scanf("%d", p);//如果此处为 &p表示键盘给p赋值 而不是给num赋值
	printf("num = %d\n",num);
}

运行结果:

 知识点8【指针变量的类型】(重要)

int *p;

在定义中:

指针变量 自身类型。只将指针变量名拖黑 剩下啥类型 指针变量自身就是啥类型。

p自身的类型是int *。

指针变量 所指向的类型。将指针变量名和离它最近的一个*一起拖黑 剩下啥类型 就指向啥类型。

p指向的类型为int ==== p保存int类型变量的地址。

指向......类型 ==保存......类型变量的地址

int num = 10;

int *p;

p = &num //p 指向 num == p保存了num的地址

案例:指针变量取值宽度。(重要)

void test03()
{
	int num = 0x01020304;
	int *p;
	short *p2;
	char *p3;

	p = #
	p2 = #
	p3 = #

	printf("*p = %#x\n", *p);
	printf("*p2 = %#x\n", *p2);
	printf("*p3 = %#x\n", *p3);
}

案例:指针变量的跨度(重要)

void test04()
{
	int num = 0x01020304;
	int *p;	
	short *p2;
	char *p3;

	p = #
	p2 = #
	p3 = #

	printf("p=%u\n",p);
	printf("p+1=%u\n",p+1);
	printf("-----------------\n");
	printf("p2=%u\n",p2);
	printf("p2+1=%u\n",p2+1);
	printf("-----------------\n");
	printf("p3=%u\n",p3);
	printf("p3+1=%u\n",p3+1);
}

运行结果:

 综合案例:

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值