初识c语言

1. 第一个c语言程序

 解释:main函数是c语言程序入口,代码是从main函数的第一行开始执行,main函数在一个工程中只能又一个。

2. 数据类型

C语言中有许多数据类型

char              字符数据类型

short              短整型

long                长整型

 long long      更长的整型

float               单精度浮点数

double            双精度浮点数

 每种类型的大小是多少?

利用sizeof标识符可以求出这些数据类型的大小,单位是字节。图中可以看到,long的大小与int相同,这是因为C语言规定long long >= long >= int,所以long可以为4字节,在不同的编译环境下,long的值会有所不同。下面的double同理。

计算机内存单位:计算机能够识别的是二进制0和1,在内存中一个0和1占用一个bit位,还有以下换算关系。

1byte = 8bit

1kb    = 1024byte

1mb   = 1024kb

1gb    = 1024mb

1tb     = 1024gb

1b      = 1024tb

3. 变量、常量

生活中的有些值是不变的(比如:圆周率、身份证号码、血型等),有些值是可变的(比如:身高、体重、年龄)。

不变的值,c语言中用常量的概念来表示,变的值c语言中用变量来表示。

3.1 定义变量的方法

类型 变量名 = 值

比如:int age = 150,

float weight = 45.5f,

char ch = 'w'.

3.2 变量的分类

1.全局变量:在大括号(代码块)外部定义的变量

2.局部变量:在大括号(代码块)内部定义的变量

注:局部变量就是在main函数中定义的变量(错误,如果是重新创建一个函数,里面创建的函数也可以是局部变量)。

当局部变量和全局变量同名的时候,局部变量优先使用。

3.3 变量的作用域和生命周期

作用域:程序设计概念,通常来说,一段代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

局部变量的作用域是:局部变量所在的局部范围。

全局变量的作用域是:整个工程。

生命周期:变量的生命周期指的是变量的创建到变量销毁之间的一个时间段。

局部变量生命周期:进入局部范围声明周期开始,出了局部范围生命周期结束。

全局变量生命周期:就是程序的生命周期。

3.4 常量

C语言中常量与变量的定义的形式有所差异。

C语言中的常量分为以下几种:

1.字面常量

2.const修饰的常量

3.#define定义的标识符常量

4.枚举常量

注:其中的pai虽然是const修饰的常量,但本质还是变量,只是具有常属性。虽本质是变量,但const修饰的常量,在之后不能为其赋值进行数值的改变。

在C99标准之前,数组的的大小只能是常量,所以const修饰的常量不能用来定义数组中的元素个数。

4.字符串+转义字符

4.1字符串

注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不能算作字符串内容。

在自定义的数组中,如果是以arr2以单个字符依次保存字符串的,因为后面没有/0,所以printf会打印arr2后面在内存中生成的随机数,直到遇见\0才停止,所以可见图上乱码.

 

这张图可以很好论证,当我在arr2后面加入'\0', 打印arr2只会打印abc,因为arr2遇见'\0',会停止打印. 

 运用函数strlen(统计‘\0’之前的字符个数)也可以达到同样的效果,函数strlen遇见‘\0’时就会停止统计字符串长度。

4.2转义字符

转义字符顾名思义就是转变意思,当一些数字或者符号遇到\的时候就会改变原来的意思,转变为其他意思。

 上表是c语言中常用的转义字符。

5.操作符

单目操作符

~:按(2进制)位取反。

如果一个整数储存在内存中的二进制序列是:

11110000111100000000000000001111

那么按位取反的结果是:

00001111000011111111111111110000

整数在内存中存放的是二进制的补码。

整数的二进制表示方式有三种:

原码:直接按照数字正负转换成二进制就是原码。

反码:原码的符号位不变,其他位按位取反,就是反码

补码:反码加一就是补码。

规定:

对于有符号整数,二进制的最高位是符号位。

最高位是0,表示正数。

最高位是1,表示负数。

正整数的原码、反码、补码相同。

负整数的原码、反码、补码需要计算。

 在上面这个例子中a

原码是:0000000000000000000000000000000

反码是:0000000000000000000000000000000

补码是:0000000000000000000000000000000

按位取反后

补码是:1111111111111111111111111111111

反码是:1111111111111111111111111111110

原码是:100000000000000000000000001

所以打印结果是-1。

在上面这个例子中b

原码是:1000000000000000000000000000001

反码是:1111111111111111111111111111110

补码是:1111111111111111111111111111111

按位取反后

补码:0000000000000000000000000000000

反码:0000000000000000000000000000000

原码:0000000000000000000000000000000

所以打印结果是0。

注:按位取反是对补码进行操作,但是打印是对原码进行打印。

11.常见关键字

11.1关键字typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。

11.2关键字static

static 有3种用法

1, static修饰局部变量

 使得局部变量出了自己的范围也不销毁,其实是改变了局部变量的生命周期

 但是作用域还是局部的。

2. static修饰全局变量

 全局变量本身是具有外部链接属性

 但是static修饰全局变量,会使得全局变量失去外部链接属性

 变成内部链接属性

 所以static修饰的全局变量,只能在自己所在的.c文件中使用

3. static修饰函数

函数默认是具有外部链接属性

但是被static修饰之后,会使得函数失去外部链接属性

变成了内部链接属性

所以static修饰的函数只能在自己所在的.c文件内部使用

不能在其他文件使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值