C语言——计算机语言——底层开发——人和计算机交流的语言
#include
//包含一个叫stdio.h的文件
//std-标准 standard input output
int main()//主函数-程序的入口-不能没有main函数,有且仅有一个
//main前面的int表示main函数调用返回一个整型值
{
printf("hello world\n");//函数-print function-打印函数
//库函数-C语言本身提供给我们使用的函数
//使用前打招呼#include
return 0;//返回0
}
Ctrl+F5 运行
F11逐语句调试
char;
short; int; long; long long;
float; double
char ch = 'A';
printf("%c\n", ch);//%c——打印字符格式的数据
int a = 10;
printf("%d",a);//%d——打印十进制数据
%d 打印整型
%c 打印字符
%f 打印浮点数字-打印小数
%p 以地址形式打印
%x 打印16进制
printf("%d\n", sizeof(char)); //1字节
printf("%d\n", sizeof(short)); //2
printf("%d\n", sizeof(int)); //4
printf("%d\n", sizeof(long)); //4
printf("%d\n", sizeof(long long)); //8
printf("%d\n", sizeof(float)); //4
printf("%d\n", sizeof(double)); //8
bit位:一个比特位存放一个二进制位1/0
1byte字节=8位
kb千字节-2^10byte
mb兆字节-1024kb
gb吉字节-1024mb
tb太字节-1024gb
pb拍字节-1024tb
局部变量——定义在代码块{}之内的变量
全局变量——定义在代码块{}之外的变量
当局部变量和全局变量的名字相同时,局部变量优先
C语言语法规定,变量要定义在当前代码块的最前面
//计算两个数的和
int main()
{
int num1 = 0;
int num2 = 0;
int num=0;
scanf("%d%d", &num1, &num2);//取地址符&
num = num1 + num2;
printf("%d\n", num);
return 0;
}
enum Sex
{
MALE,//0
FEMALE,//1
SECRET//2
};
int main()
{
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n",SECRET);
//枚举关键字——enum
//const常属性
//const修饰的常变量
const int num = 4;
printf("%d\n", num);
//num = 8;//error C3892: “num”: 不能给常量赋值
printf("%d\n", num);
return 0;
}
双引号引起的一串字符称为字符串
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c',0 };
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
‘\0’的值是0——ASCII值
转变了字符原有的意思
例:
\ddd ddd表示1-3个八进制的数字
\xdd dd表示2个十六进制数字
int main()
{
printf("%c\n", '\130');//八进制的130十进制是88
//X——ASCII码值是88
printf("%d\n", 'X');
printf("%c\n", '\x58');
return 0;
}
ASCII码表:每一个字符都有一个值:ASCII码值
printf("%d\n", strlen("c:\test\328\test.c"));
//14
\t算一个字符;\328不是一个字符,八进制里没有8,所以\32是一个字符
解释复杂代码
if选择语句
while语句
函数
数组:一组相同类型的元素的集合
数组是用下标来访问的
算数操作符 + - * /
移位操作符:移一个二进制位,补0
<<左移
>>右移
位操作符 & ^ |
赋值操作符 = += -= *= /= &= ^= |= >>= <<=
单目操作符 ! - + & sizeof ~ -- ++ * (类型)
~按位取反
关系操作符 > >= < <= != ==
逻辑操作符 && ||
条件操作符 exp1 ? exp2 : exp3
逗号表达式:逗号隔开的一串表达式
是从左到右依次计算的,整个表达式的结果是最后一个表达式的结果
下标引用、函数调用和结构成员 [] () . ->
EOF-文件结束标志-值是-1
计算数组的元素个数:
个数=数组总大小/类型所占空间的大小,单位是字节
sizeof(数组名) – 计算数组大小,单位是字节
~按位取反(2进制位)
原 码 -》 反码 -》 补码
直接按照正负写出来的二进制序列 原码符号位不变,
其他位取反 反码+1
//有符号的数字存储时,正数第一位是0,负数第一位是1
//整数在内存中存储的时候,存储的是二进制的补码
//正数的原码、反码、补码相同
后置++,先使用,再++
前置++,先++,再试用
后置--,先使用,再—
前置--,先--,再使用
C语言中表示真假:0-假;非0-真
typedef类型定义,类型重命名
typedef unsigned int u_int;
int main()
{
unsigned int num1 = 100;
u_int num2 = 200;
return 0;
}
static
1.static 修饰局部变量
局部变量的生命周期变长
2.static 修饰全局变量
改变了变量的作用域-让静态的全局变量只能在自己所在的源文件内部使用
除了源文件就没办法再使用了
外部连接属性->内部链接属性
3.static 修饰函数
也是改变了函数的作用域-不准确
static修饰函数改变了函数的链接属性
外部连接属性->内部链接属性
define是一个预处理指令
#define MAX 1000
#define ADD(x,y) ((x)+(y))
每个内存单元的大小是1个字节
内存单元的编号成为该内存单元的地址
&取地址符
*解引用操作符
有一种变量是用来存放地址的——指针变量,类型是int*/char*.....
//指针变量存放的是地址,32/64个bit位
32位平台上1个指针变量的大小是4个字节
64位平台上1个指针变量的大小是8个字节
复杂对象-结构体-我们自己创造出来的一种类型
strcpy()——字符串拷贝-库函数-头文件string.h