c 语言特点
新手写的第一个 c 语言程序
- 1.#include<stdio.h> 头文件包含,一定要有
- 2.每一个 c 语言的程序有且只有一个 main 函数,这是整个程序的开始位置
- 3.C 语言中
()
、[]
、{}
、""
、"
、都必须成对出现,必须是英文符号 - 4.C 语言中语句要以分号结束。
- 5.
//
为注释
/*
1.#include<stdio.h> 头文件包含,一定要有
2.每一个 c 语言的程序有且只有一个 main 函数,这是整个程序的开始位置
3.C 语言中()、[]、{}、“”、’’、都必须成对出现,必须是英文符号
4.C 语言中语句要以分号结束。
5.//为注释
*/
#include<stdio.h>
int main(int args, char* arg[])//这个我的第一个 c 语言程序
{
printf("hello world\n");
//printf 是输出打印的函数
return 0;
}
运行结果:
2.1 关键字
2.1.1 数据类型相关的关键字
用于定义变量或者类型
类型 变量名:
char
short
int
long
float
double
struct
union
enum
signed
unsigned
void
1、
char
字符型 ,用char
定义的变量是字符型变量,占1
个字节,char ch='a'
;=
为赋值号
char ch1= "1"; //正确 存放的是一个字符,不是字符串
char ch2 = "1234" ; //错误的 这里因为存放了字符串,所以错误了
2、
short
短整型 ,使用short·
定义的变量是短整型变量,占2
个字节
范围在:-32768 ---- 32767
short int a= 11; //-32768 ---- 32767
3、
int
整型 ,用int
定义的变量是整型变量,在32
位系统下占4
个字节,在16
平台下占2
个字节
int a=44; // -20 亿--- 20 亿
4、
long
长整型 用long
定义的变量是长整型的,在32
位系统下占4
个字节
long int a=66;
5、
float
单浮点型 (实数),用float
定义的变量是单浮点型的实数,占4
个字节
float b=3.8f;
6、
double
双浮点型 (实数),用double
定义的变量是双浮点型的实数,占8
个字节
double b=3.8;
7、
struct
这个关键字是与结构体类型
相关的关键字,可以用它来定义结构体类型
8、
union
这个关键字是与共用体(联合体)相关的关键字
9、
enum
与枚举类型
相关的关键字
10、
signed
有符号(正负)的意思 在定义char
、整型
(short
、int
、long
) 数据的时候用signed
修饰,代表咱们定义的数据是有符号 的,可以保存正数,也可以保存负数 例 :
signed int a=10;
signed int b=-6;
注意:默认情况下 signed 可以省略 即 int a=-10;//默认 a 就是有符号类型的数据
11、
unsigned
无符号的意思 在定义char
、整型
(short
、int
、long
) 数据的时候用unsigned
修饰,代表咱们定义的数据是无符 号类型的数据 只能保存正数
和0
。
unsigned int a=101;
unsigned int a=-101; //错误 有符号,不能存放负数
扩展:内存存储
char ch= ‘a’; //占 1 个字节
存储的是 97
- 0110 0001
字节:内存的基本单位,8
位为 1
个字节
计算机存储时,只能存储1
和 0
的二进制组合,1
和0
都分别占1
位
字符型数据在内存中存储的不是字符本身,而是存储其 AsciI
码
整型变量存储的是其值的二进制
unsigned int a = 97;
扩展:正数和负数在内存中到底是怎么存的
原码、反码、补码
规定:
正数的原码反码和补码相同 5
0000 0101
负数:-5
0000 0101
最高位为符号位 最高位为 1 代表是个负数
原码:-5
1000 0101
反码:除了符号位 其他位取反
1111 1010
补码:反码 +1
1111 1011
注意:负数在内存中是以补码形式存放的
#include <stdio.h>
int main(int args, char* arg[])
{
int b = -5;
printf("%d\n",b); //打印b的数
printf("%x\n",b);
return 0;
}
运行结果:
12、
void
空类型的关键字char
、int
、float
都可以定义变量void
不能定义变量,没有void
类型的变量void
是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值
例 1:
//代表fun 函数没有返回值,
//fun 函数没有参数
void fun(void)
{
}
例 2:
#include <stdio.h>
int main(int args, char* argv[])
{
char a = 'a';
short int b = 10;
int c;
long int d;
float e;
double f;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(c));
printf("%d\n",sizeof(d));
printf("%d\n",sizeof(e));
printf("%d\n",sizeof(f));
return 0;
}
运行结果:
2.1.2 存储相关关键字
register
static
const
auto
extern
1、
register
是 寄存器的意思,用register
修饰的变量是寄存器变量,
即:在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中。
注意:
- (1):定义的变量不一定真的存放在寄存器中。
- (2):
cpu
取数据的时候去寄存器中拿数据比去内存中拿数据要快 - (3):因为寄存器比较宝贵,所以不能定义寄存器数组
- (4):register 只能修饰 字符型及整型的,不能修饰浮点型
register char ch;
register short int b;
register int c;
register float d;//错误的
- (5):因为 register 修饰的变量可能存放在寄存器中不存放在内存中,所以 不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址
register int a;
int *p; p = &a;//错误的,a 可能没有地址
2、
static
是静态的意思
static 可以修饰全局变量、局部变量、函数
3、
const
const 是常量的意思, 用 const 修饰的变量是只读的,不能修改它的值
const int a = 101;//在定义 a 的时候用 const 修饰,并赋初值为 101
从此以后,就不能再给 a 赋值了
a = 111;//错误的
const 可以修饰指针
4、
int a
;和int a
是等价的,auto
关键字现在基本不用
5、
extern
是外部的意思,一般用于函数和全局变量的声明
2.1.3 控制语句相关的关键字
if
else
break
continue
for
while
do
switch
case
goto
default
2.1.4 其他关键字
sizeof
typedef
volatile
1、
sizeof
使用来测变量、数组的占用存储空间的大小(字节数)
例 3:
int a=10;
int num;
num=sizeof(a);
2、
typedef
重命名相关的关键字
unsigned short int a = 10;
U16
关键字 ,作用是给一个已有的类型,重新起个类型名,并没有创造一个新的类型 以前大家看程序的时候见过类似的变量定义方法
INT16 a;
U8 ch;
INT32 b;
大家知道,在 c 语言中没有
INT16
U8
这些关键字 INT16
U8
是用 typedef
定义出来的新的类型名,其实就是 short int
及 unsigned char
的别名
typedef 起别名的方法:
- 1、用想起名的类型定义一个变量
short int a;
- 2、用新的类型名替代变量名
short int INT16;
- 3、在最前面加
typedef typedef short int INT16;
- 4、就可以用新的类型名定义变量了
INT16 b;和 short int b;//是一个效果
例 4:
#include <stdio.h>
//short int b;
// short int INT16;
typedef short int INT16;
int main(int args, char* argv[])
{
short int a=101;
INT16 c=111;
printf("a=%d\n",a);
printf("c=%d\n",c);
return 0;
}
3、
volatile
易改变的意思 用volatile
定义的变量,是易改变的,即告诉 cpu 每次用 volatile 变量的时候,重新去内存中取
保证用的是最新的值,而不是寄存器中的备份。
volatile 关键字现在较少适用
volatile int a=10;
扩展知识:
命名规则: 在 c 语言中给变量和函数起名的时候,由字母
、数字
、下划线
构成 必须以字母
或者下滑线
开头
例 5:
int a2;//正确的
int a_2;//正确的
int _b;//正确的
int 2b;// 错误的
int $a2;//错误的
C 语言的程序结构 一个完整的 C 语言程序,是由一个、且只能有一个 main()函数(又称主函数,必须有) 和若干个其他函数结合而成(可选) main 函数是程序的入口,即 程序从 main 函数开始执行。