0
点赞
收藏
分享

微信扫一扫

【C语言】指针详解(一)

肉肉七七 2023-12-22 阅读 40
c语言

目录

1.内存和地址

1.1内存

1.2如何理解编址

2.指针变量和地址

2.1取地址操作符(&)

2.2指针变量和解引用操作符(*)

2.2.1指针变量

 2.2.2拆解指针类型

2.2.3解引用操作符

2.3指针变量大小


1.内存和地址

1.1内存

在讲内存和地址之前,我们想有个生活中的案例:
假设有一栋宿舍楼,把你放在楼里,楼上有100个房间,但是房间没有编号,你的一个朋友来找你玩,如果想找到你,就得挨个房子去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如:

生活中,每个房间有了房间号,就能提高效率,能快速的找到房间。

如果把上面的例子对照到计算中,又是怎么样呢?

计算机中常见的单位(补充)︰
一个比特位可以存储一个2进制的位1或者0

 

1.2如何理解编址

2.指针变量和地址

2.1取地址操作符(&)

我们在这里学习取地址操作符&

#include<stdio.h>
int main()
{
	int a = 10;
	&a;//取出a的地址
	printf("%p\n", &a);
	return 0;
}

按照我画图的例子,会打印处理:006FFD70,&a取出的是a所占4个字节中地址较小的字节的地址。虽然整型变量占用4个字节,我们只要知道了第一个字节地址,顺藤摸瓜访问到4个字节的数据也是可行的。

2.2指针变量和解引用操作符(*)

2.2.1指针变量

#include<stdio.h>
int main()
{
	int a = 10;
	int* pa = &a;//将取出的地址存放在p中
	return 0;
}

 2.2.2拆解指针类型

 

我们看到pa的类型是int*,我们该如何理解指针的类型呢?

那如果有一个char类型的变量ch,ch的地址,要放在什么类型的指针变量中呢?

//pa的类型应写为

char *pa = &ch

2.2.3解引用操作符

我们将地址保存起来,未来是要使用的,那怎么使用呢?
在现实生活中,我们使用地址要找到一个房间,在房间里可以拿去或者存放物品。
C语言中其实也是一样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址
(指针)
指向的对象,这里必须学习一个操作符叫解引用操作符(*)。

#include<stdio.h>
int main()
{
	int a = 10;
	int *pa = &a;//将取出的地址存放在p中
	*pa = 0;
	return 0;
}

2.3指针变量大小

#include<stdio.h>
int main()
{	
	//指针变量的大小取决于地址的大小
	//32位平台下地址是32个bit位(即4个字节)
	//64位平台下地址是64个bt位(即8个字节)

	printf("%zd\n", sizeof(char*));
	printf("%zd\n", sizeof(short*));
	printf("%zd\n", sizeof(int*));
	printf("%zd\n", sizeof(double*));
	return 0;
}

 

 以上便是我为大家带来的指针详解(一)的内容,若有不足,望各位大佬在评论区指出,谢谢大家!可以留下你们点赞、收藏和关注,这是对我极大的鼓励,我也会更加努力创作更优质的作品。再次感谢大家! 

 

举报

相关推荐

指针详解【C语言】

C语言-详解指针

C语言,指针详解

C语言指针详解

c语言指针详解

【C语言】指针详解(五)

0 条评论