指针(2)

C语言昂,指针昂,最喜欢的一集,小时候学这一课我直接取地址了。既然开了这个指针的坑,那也是不得不写了,上一篇提到了一些指针的基本概念,这一篇就主要研究一下不同类型的指针的不同的特性吧。

自从学习C语言开始,我们就知道了很多变量的类型,像整型(int)、长整型(long)、短整型(short),浮点型(float)、双精度浮点型(double)、字符型(char)......很多类型,不计其数,我们知道,指针变量就是在一般的变量类型后面加上"*"号,(容我一个初学者这么理解吧...)那么不同的变量就能构成不同的指针变量了------还真是。我们知道一个函数,可以知道各种变量类型的大小------sizeof,我们先来看看这些变量的大小:

cs 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	printf("%d\n", (int)sizeof(int));
	printf("%d\n", (int)sizeof(long));
	printf("%d\n", (int)sizeof(short));
	printf("%d\n", (int)sizeof(float));
	printf("%d\n", (int)sizeof(double));
	printf("%d\n", (int)sizeof(char));
	return 0;
}

我们可以使用sizeof这个函数来确定不同变量类型的大小,但值得一提的是,**sizeof算出来的变量的大小,会根据编译器(或者电脑的位数)的不同,而产生不同的大小,**比如我用的是vs2022编译器,给大家展示一下它们的大小:

可以看到double类型的大小是最大的,来到了8(字节-byte),而char类型是最小的------只有1字节,先了解这个之后,我们发现,不同的字符类型所占的空间是不同的,那我们猜测,不同类型的指针变量所占的空间也是不同的?让我们试试:

cs 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	printf("%d\n", (int)sizeof(int*));
	printf("%d\n", (int)sizeof(long*));
	printf("%d\n", (int)sizeof(short*));
	printf("%d\n", (int)sizeof(float*));
	printf("%d\n", (int)sizeof(double*));
	printf("%d\n", (int)sizeof(char*));
	return 0;
}

我们打印出每个类型的指针变量来看看------同样,其大小也和编译器还有位数有关(64位大于32位),我们看看vs2022和64位机器打印出的不同类型的指针变量的大小是多少吧------

我们发现每种类型的指针变量的大小都是一样的,在64位的环境和vs2022的编译器下占8个字节(某些编译器落后一点或者32位的机器上也也可能是4字节),但不管是4字节还是8字节,都能证明一件事------不管变量是什么类型,它们的指针的大小都是一样的,这和变量本身的类型无关。知道了这个之后,我们为指针以后的学习埋下伏笔。

相关推荐
老花眼猫3 小时前
编制椭圆旋转绘图函数
c语言·经验分享·青少年编程·课程设计
iCxhust6 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
qeen876 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
handler016 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
热心网友俣先生7 小时前
2026年第二十三届五一数学建模竞赛C题超详细解题思路+各问题可用模型推荐+部分模型结果展示
c语言·开发语言·数学建模
li1670902708 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
Aurorar0rua10 小时前
CS50 x 2024 Notes C - 07
c语言·学习方法
爱编码的小八嘎10 小时前
C语言完美演绎9-15
c语言
weixin_4217252611 小时前
C语言常用字符串函数:长度、比较、拼接和查找
c语言·字符串函数·查找·比较·长度
yzq19912711 小时前
C语言#和##的用法(附带示例)
c语言·宏定义·预处理运算符·字符串化·标记连接