0
点赞
收藏
分享

微信扫一扫

都什么时候了,还没入门指针吗?

骨灰级搬砖工 2022-03-12 阅读 81
c语言

导言
作为一个大一学生,在没有上c语言之前就听说过c语言中指针是有相当的难度,而作为一个非计算机专业的学生,在学习c语言时,指针部分也没有对我们做过多的要求,因此指针部分也就是知道有那么回事,而后来许多c语言大佬告诉我,指针是c语言的精髓,于是硬着头皮又把这部分基础内容复习了一遍。
还有关于写博客,一直都以为这博客是写给别人看的,所以一直对自己要求很高,所以也就迟迟没有写过。后来有一位兄弟催我更新,他跟我说:写博客真正的目的不是为了让别人去看,而是总结自己的知识。总结自己错误点和分享自己所学过的知识,没有必要为了写博客而写博客。
正文
1.何为指针
2.指针类型
3.指针运算
在这里插入图片描述

何为指针

书上的概念:指针是c语言中对地址的特殊称谓。
理解:就好比你在宾馆开一间房,你会先到前台去办理入住手续,办好了之后你会得到一个房间的房号,比如602。然后你住进去之后在这个宾馆的人就可以通过房间号找到你。而相应地你办理了退房手续后,别人通过这个房间号就找不到你了。

#include <stdio.h>
int main()
{
	int a = 12;
	int* pa = &a;
	printf("%p\n", pa);
	printf("%d\n", &pa);
	return 0;
}

Q1:这里指针是如何使用的呢:
首先我们定义了一个变量并且赋值为12,然后我们对a进行取地址操作,&是取地址操作符,然后我们声明一个iint*类型的变量来储存a的地址,以便我们以后能通过这个变量来找到a。利用printf输出pa量,是一个地址。而通过解引用操作我们可以访问到变量pa的值。
Q2:既然指针是一个变量,那么它的内存是多大呢
指针的的大小和操作系统有关,对于32位的操作系统,其指针的内存大小是4个字节。而对于64位的操作系统,其指针的内存大小是8个字节。

在这里插入图片描述
假如说这是一个32位的操作系统,那么它的每一个比特位里面就只能存在0或1,那么一共有2的32次方种情况,而四个字节正好就是32个比特位,可以在32位电脑的系统里唯一地表示一个数,因此在32位的操作系统中指针的大小是4个字节。
)

指针类型

指针的定义方式很简单:type+*:

int *  //存放整形变量的地址
char* //存放字符型类型变量的地址
float* //存放·浮点数类型变量的地址

指针运算

是的,你没听错,指针也可以进行运算。这里我们简单介绍指针+整数操作

#include <stdio.h>
int main()
{
	int m = 10;
	char* pc = (char*)&m;
	int* pm = &m;
	printf("%p\n", &m);
	printf("%p\n", pc);
	printf("%p\n", pc + 1);
	printf("%p\n", pm);
	printf("%p\n", pm + 1);

	return 0;
}

在这里插入图片描述
运行结果是这样的,可以看出整数和字符型指针相加,数字会变大n;而整数和整数型指针相加数字会变大4n,所以指针的类型会影响指针加减整数的值。
指针的类型决定了它往后走一步有多大,同时,指针的类型也决定了它解引用时有多大权限。

结束语
到此,我知道我还没有入门,但是我会坚持,毕竟有些事,做了就足够了,开心就足够了,希望我也可以将我的开心带给你!
我是布吉岛,关注我,在学习的路上,让我们一点点变得吉岛。
在这里插入图片描述

举报

相关推荐

0 条评论