【黑马程序员】iOS学习之路——C语言之数据类型、常量、变量

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、数据

1.什么是数据

生活中时时刻刻都在跟数据打交道,比如体重数据、血压数据、股价数据等。在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据、图片数据、视频数据,还有聊QQ时产生的文字数据、用迅雷下载的文件数据等。

2.数据的分类

计算机中存储的数据可以分为两种:静态数据和动态数据

1> 静态数据

概念:静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件。

存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在。

哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

2> 动态数据(临时数据)

概念:动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有4G左右,因此要谨慎使用内存,不要占用太多的内存空间。

存储的时长:计算机关闭之后,这些临时数据就会被清除。

哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。

你可能会问:既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?有个主要原因是内存的访问速度比硬盘快N

3.数据的大小

1> 不管是静态还是动态数据,都是0和1组成的。0和1如何组成这么多的数据?

2> 数据都有大小,静态数据就会占用硬盘的空间,动态数据就占用内存的空间

3> 数据越大,包含的0和1就越多,比特位和字节

4> 1 KB = 1024 B,1MB = 1024 KB,1 GB = 1024 MB,1 TB = 1024 GB

4.C语言中的数据类型


二、常量

1.什么是常量

常量,表示一些固定的数据

2.常量的分类

1> 整型常量(int)

包括了所有的整数,比如6、27、109、256、-10、0、-289等

2> 浮点型常量(float\double)

浮点型常量分为double和float两种数据类型

double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)

float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。

为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。

3> 字符常量(char)

将一个数字(0~9)、英文字母(a~z、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。

注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc''123456'''

4> 字符串常量

将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实printf("Hello World");语句中的"Hello World"就是字符串常量。

那究竟6'6'"6"在用法上有什么区别呢

据上述所知,6 是 整型常量 ‘6’ 是 字符常量 “6” 是 字符串常量

三、变量

1.什么是变量

当一个数据的值需要经常改变或者不确定时,就应该用变量来表示。比如游戏积分。

2.定义变量

1> 目的

a. 任何变量在使用之前,必须先进行定义。

b. 定义变量的目的是:在内存中分配一块存储空间给变量,方便以后存储数据。

c. 如果定义了多个变量,就会为这多个变量分别分配不同的存储空间。

2> 格式

变量类型 变量名;

比如int num;

变量名属于标识符

变量类型

不同类型的变量占用不同大小的存储空间。内存极其有限,分配适当的存储空间

约束变量所存放的数据类型(方便运算)

3.变量的使用

1> 赋值

往变量里面存点东西,就是赋值。赋值语句后带个分号;

i = 10;

注意:这里的等号=,并不是数学中的“相等”,而是C语言中的赋值运算符,作用是将右边的常量10赋值给左边的变量i

第一次赋值,可以称为“初始化”

初始化的两种形式

先定义,后初始化:int a;  a = 10;

定义的同时进行初始化:int a = 10;

2>  修改

可以修改变量的值,多次赋值。每次赋值都会覆盖原来的值

i = 10;

i = 20;

变量i最后的值是20

3> 变量的应用(变量值得交换)

#include <stdio.h>

int main()
{
	//声明两个整型变量a = 10,b = 11
	int a = 10,b = 11;

	//打印交换前的两个变量的值
	printf("交换前:a = %d,b = %d\n",a,b);

	//利用中间变量,进行两个值的交换(工作时要用,掌握)
	// int temp = a;
	// 	a = b;
	// 	b = temp;

	//不借助其他任何变量,进行两个值交换(面试时常问,了解)
	// a = a + b;
	// b = a - b;
	// a = a - b;

	//利用异或,进行两个值交换(个人喜好,根据理解掌握)
	a ^= b;
	b ^= a;
	a ^= b;

	//打印交换后的两个变量的值
	printf("交换后:a = %d,b = %d\n",a,b);
	
	return 0;
}

四、变量的内存分析

1.字节和地址

为了更好地理解变量在内存中的存储细节,先来认识一下内存中的“字节”和“地址”

1> 内存以“字节为单位”

0x表示的是十六进制,不用过于纠结,能看懂这些数字之间谁大谁小就行了

2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多

2.变量的存储

1> 所占用字节数跟类型有关,也跟编译器环境有关


2>   变量实例

int b =10;

int a =20;

内存由大到小寻址,优先分配内存地址较大的字节给变量。b的内存地址比a大

每个变量都有地址:第一个字节的地址就是变量的地址

3>  查看内存地址:

int a;

printf("a的地址是:%p\n",&a);

4> 注意

在变量未经初始化之前,不要尝试使用变量的值

int a;

printf("a的值是:%d\n", a);

上面的写法是不建议

3.变量的作用域

1> 从定义变量的那一行代码开始,一直到所在的代码块结束

2> 代码块,及时回收不在使用的变量,提升性能

五、scanf函数

1.简介

这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>。调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量

2.简单用法

int age;

scanf("%d", &age);

scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的第1个参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是age变量而是age变量的地址&age&C语言中的一个地址运算符可以用来获取变量的地址

输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给age变量

3.其他用法

1> 用scanf函数接收3个数值,每个数值之间用中划线-隔开

scanf("%d-%d-%d",&a, &b, &c);

3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输入,不然在给变量赋值的时候会出问题

注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母

//逗号,

scanf("%d,%d,%d",&a, &b, &c);// 输入格式:10,14,20 

//井号#

scanf("%d#%d#%d",&a, &b, &c);// 输入格式:10#14#20 

//字母x 

scanf("%dx%dx%d",&a, &b, &c);// 输入格式:10x14x20

2> 用scanf函数接收3个数值,每个数值之间用空格隔开

scanf("%d %d%d", &a, &b, &c);

3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格tab回车

4.注意

scanf的第一个参数中不要包含\n,比如scanf(“%d\n”,&a); 这将导致scanf函数无法结束

六、printf函数

1.简介

这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>。

2.简单用法

整型数据          %d

字符型数据          %c

浮点型数据          %f默认6位小数,可以%.2f来限制输出几(2)位小数

地址(指针)          %p

int i = 10,

double d = 10.1;

float f = 10.1f;

char c = 'c';

printf("%d,%f,%f,%c,%p",i,d,f,c,&a);




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值