细讲C语言数据结构和变量

1. 数据类型介绍

C语言有丰富的数据类型。使用整型类型int 表示整数,字符类型char表示字符,浮点数float表示小数。
下面给给大家盘点以下C语言的各种数据类型。今天主要讲内置数据类型。
在这里插入图片描述

1.2布尔类型

这边我重点讲一下布尔类型。
C语⾔原来并没有为布尔值单独设置⼀个类型,而是使用整数0表示假,非零值表示真。
在C99中引入了布尔类型,专门表示真假

  1. 布尔类型的使用得包含头文件<stdbool.h>
  2. 布尔类型的变量取值只有ture 和false俩种
#include <stdbool.h>
#include <stdio.h>

int main()
{
	bool flag = true; //bool是数据类型,flag是自己定义的变量,true指给变量初始化
	if (flag)
	{
		printf("i like c");
	}
	return 0;
}

这段代码可能有很多小伙伴看不懂,没关系。我给大家细讲。

首先,使用bool这个数据类型一定要包含头文件<stdbool.h>,为什么要写数据类型,这是因为编译器只有知道了数据类型,才知道怎么操作数据。而flag是我们自己定义的变量,后面会讲。接下来的 = 是赋值运算符,要注意 ==这个才是相等。最后那个true指的是给它初始化,如果不懂也可以理解为赋值。要注意布尔类型只有true 和false俩个值。

其次,if 语句给大家浅浅讲一下,if后面要加表达式,比如在()可以里面放1 ,1+2,还有上面的flag等等,只要括号里面为真,就执行下面的语句。大家可以自己去敲一下。注意一下数字的话,0为假,非0为真。

1.3 sizeof运用方法

sizeof 是⼀个关键字,也是操作符。专⻔是⽤来计算数据类型⻓度的,也能计算变量、表达式的长度,单位是字节

我知道大家看文字不理解,我这边用代码给大家展示

int main()
{
	int a = 10; //int指的是整型的数据类型,a是变量 ,10是给变量的初始化
	printf("%zd\n", sizeof(a)); //sizeof计算出来的长度用zd占位符表示
	printf("%zd\n", sizeof(int));

	return 0;
}

这时候大家可能就会问,知道数据类型的长度有什么用呢?这是因为从堆上分配空间的时候,需要知道每一个类型的大小,才能准确分配内存,大家了解一下就行。

在这里插入图片描述

大家可以看一下,看不懂也没事,大家只要记住sizeof也有占位符,用%zd表示就行了。

接下来,我带大家来看每个数据类型占几个字节

int main()
{
	printf("%zd\n", sizeof(char));
	printf("%zd\n", sizeof(short));
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(long));
	printf("%zd\n", sizeof(long long));
	printf("%zd\n", sizeof(float));
	printf("%zd\n", sizeof(double));


	return 0;
}

在这里插入图片描述

最后,我要讲的是sizeof不会计算内部的表达式
在这里插入图片描述
图中的s=a + 2的大小是不计算的,那它的长度是多少呢?这其实是看表达式最前面的s,它的数据类型是int,所以我们可以看到它的长度是4。这边我讲的不是很到位,大家可以网上在找一下资料在去学习一下。

1.3 signed 和 unsigned

C语言中使用signed 和unsigned关键字修饰字符型和整型类型的
signed关键字,表示一个类型带有正负号
unsigned关键字,表示该类型表示零和正整数

int main()
{
	int n; //它默认是带有正负号的,也就是说int就等于signed int
	signed int m;//表示这个变量既包括正号,又包括负号
	unsigned int q;//只表示零和正整数
	return 0;
}

对于int类型,默认是带有正负号的,也就是说由于这是默认情况,关键字int 等同于signed int 。signed ⼀般都省略不写,但是写了也不算错。

2.变量

前面我们了解清楚了数据类型,其实数据类型就是用来创建变量的。

什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。

变量创建的语法是这样的:
在这里插入图片描述

int age; //整型变量
char ch; //字符变量
double weight //浮点型变量

变量在创建的时候就给一个初始值,就叫初始化

int age = 18;
char ch = 'x';
double weight = 48.8;

2.1 变量的分类

全局变量:在大括号外部定义的变量就是全局变量

局部变量:在大括号内部定义的变量就是局部变量

#include <stdio.h>
int global = 2021; //全局变量
int main()
{
	int local = 2023; //局部变量
	printf("%d\n", local);
	printf("%d\n", global);

	return 0;
}

大家要注意一下,当局部变量和全局变量同名的时候,局部变量优先使用

大家知道全局变量和局部变量在内存中存储在哪里呢?
在这里插入图片描述

这边大家了解一下就行了

最后我要讲的是,如果大家使用vs的话,vs非常严谨,如果一个局部变量没有初始化,就不让你使用,如果你想使用局部变量一定要初始化。全局变量没有初始化,默认是0.
在这里插入图片描述
正常来说一个局部变量不初始化,它的值为随机值,只不过有些编译器不一样,就像vs。但在devc++中它的值就是随机值

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值