第一个C语言项目
如何写代码?
创建一个项目
创建一个源文件(xxxx.c)
写代码
写出主函数(main函数) 有且仅有一个main函数,但是多个.c文件中只能有一个main函数
编写代码:
#include<stdio.h>
int main()
{
printf("Hello World! ");
return 0;
}
stdio.h :standard-input-output
int:函数的返回类型,整型。
printf:库函数,在屏幕上打印信息的
译代码+运行
(编译+链接+运行代码 快捷键:Ctrl+F5/Ctrl+F5+Fn)
数据类型
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点型
double 双精度浮点型
double在数据类型转换中的级别最高,在各个数据类型进行加减乘除运算时,最终数据类型都要转化为double
C语言标准:
sizeof(long)>=sizeof(int)
%d-打印一个整数(没有%d打出来的整数)
sizeof-关键字-操作符-计算类型或者变量所占空间大小
计算机中的单位:
bit(位)-比特位
byte(字节)=8bit (sizeof的单位)
kb=1024byte
mb=1024kb
gb=1024mb
tb=1024gb
pb=1024tb
初识变量、常量
变量:年龄、体重
常量:性别、血型
%d-int
%f-float
%lf-double
变量的分类:
局部变量和全局变量
//全局变量-{}外部定义的
int a=100;
int main()
{
//局部变量{}内部定义的
//当局部变量和全局变量名字冲突的情况下,局部优先
int a=10;
return 0;
}
变量的使用
//写一个代码求2个整数的和
//scanf函数是输入函数
错误解决方法:整个源文件的第一行加上 :#define _CRT_SECURE_NO_WARNINGS
变量的作用域和使用周期
局部变量的作用域:变量所在的局部范围
全局变量的作用域:整个工程
变量的生命周期:变量的创建和销毁之间的时间段
局部变量的生命周期:进局部范围生命开始,出局部范围生命结束
全局变量的生命周期:整个程序的生命周期
常量
字面常量
const修饰的常变量
常变量是指具有常属性(不能给改变的属性)的变量
#define定义的标识符常量
枚举常量(默认值是从0开始的)
一般用于可以一一列举的常量 (性别、星期、三原色)
初识字符串+转义字符+注释
字符串
eg:"Hello World\n" 用双引号括起来的一串字符
结束标志:\0的转义字符,不算作字符串内容
字符数组:一组相同类型的元素
首先进入调试状态 F10
以下图片说明了字符串是以\0为结束标志的重要性
strlen没有定义头文件 #include <string.h>
打印整型printf("%d",100);
打印字符printf("%c",'a');
打印字符串("%s","abc");
转义字符
转变了它原来的意思
注释
用来解释复杂代码的 快捷键:Ctrl+Shift+C或Ctrl+/ ---//
Shift+Ctrl+/ ---/*
初识选择语句
初识循环语句
while循环
for循环
do...while循环
初识函数&数组
数组
一组相同类型的元素的集合
初识操作符
算术操作符
加减乘除+ - * / %
移位操作符
>>向右操作符 << 向左操作符
位操作符:
左移操作符-移动的是二进制位(左移最后一位永远补0)
位操作符
& 按位与
| 按位或
^ 按位异或
赋值操作符
= += -= *= |= <<= >>=
例如 a=a+5 就可以写成a+=5;复合赋值
单目操作符
逻辑反操作【!】
对一个数的二进制按位取反【~】
自增自减运算符【++, – – 】
负值【-】
强制类型转换【(类型)】
取地址【&】
操作数的类型长度(以字节为单位)【sizeof】
a+b
+有两个操作数,即为双目操作符
单目操作符,有一个操作数
常见关键字
关键字不能做变量名
auto (每个局部变量都是auto修饰的,基本都是省略)break(循环、switch语句) case char const(修饰常变量)
continue default do double else enum extern(声明外部符号) float for
goto(goto语句) if int long register(寄存器关键字) return short(短整型)
signed(有符号的)-unsigned(无符号的) sizeof static(静态的) struct(结构体) switch
typedef union(联合体/共用体) unsigned void(无-空) volatile while(循环)
define 、include-预处理指令
int main()
{
register int num=100;//建议num的值存放在寄存器中;寄存器速度非常快
return 0;
}
关键字
typedef-类型定义,类型重定义 --把一个使用不方便的类型简化
例如:unsigned int(无符号整型)=u_int 别名
static-静态的
修饰局部变量
修饰全部变量
修饰函数
#include<stdio.h>
typedef unsigned int uint;
typedef struct Node
{
int data;
struct Node* next;
}Node;
int main()
{
unsigned int num=0;
uint num2=1;
struct Node n;
Node n2;
return 0;
}
关键字 static静态的
修饰变量和函数
修饰局部变量(局部变量出作用域不销毁,本质上,static改变了局部变量的存储位置)
修饰全局变量
(static修饰全局变量时,将全局变量的外部链接属性改为内部链接属性。其他源文件(.c)就不能再使用这个全局变量了)
修饰函数 函数具有外部链接属性
(static修饰函数时,将函数的外部链接属性改为内部链接属性,其他源文件(.c)就不能再使用这个函数了)
define定义常量
add函数
#define(x,y)((x)+(y)) //宏 宏的参数(参数无整型)