C语言学习笔记01

可执行文件: 由指令和数据构成的集合 (扩展名为.exe .bat .com等)
不可执行文件: 由数据构成
C/C++中, .c/.cpp源文件(文本), .h头文件(文本), .i预编译(文本), .s汇编文件(文本), .o/.obj二进制目标文件(文本), .exe可执行文件
C语言编译链接过程
main.c源文件 ->预编译 -> main.i预编译文件 -> 编译 -> main.obj目标文件 -> 链接-> main.exe可执行文件
程序的执行入口函数是int main()
进制转换
贪心算法 eg.103 -> 128 64 32 16 8 4 2 1 // 0 1 1 0 0 1 1 1
数据类型
sizeof 关键字, 计算变量或数据类型所占的字节个数
字节(byte) 一字节8位二进制构成

2^10 -> 1KB2^20 -> 1MB2^30 -> 1GB
2^40 -> 1TB2^50 -> 1PB2^60 -> 1EB
2^70 -> 1ZB2^80 -> 1YB2^90 -> 1BB

标识符 (名字)
首字符必须是英文字母或下划线(之后可以是数字)

int a = 100;
int b = 200;
{
	int a = 0;
	printf("a = %d \n", a); // 0 局部变量与块变量同名时,会把局部变量隐藏
}
b = a + 10;
printf("b = %d \n", b); // 110 块变量在块作用域外面时不起作用
int g_max = 100;
int main()
{
	int a = 0;
	int g_max = 10;
	a = g_max;
	printf("a = %d \n", a); // 100
	return 0;
}

向上就近原则:

int g_max = 100;
int main()
{
	int a = g_max ;
	int g_max = 10;
	printf("1  a = %d \n", a); // 100
	a = g_max;
	printf("2  a = %d \n", a); // 10
	return 0;
}

scanf 变量需要取地址
printf

char ch;
int a;
float ft;
scanf("%c %d %f", &ch, &a, &ft);
printf("ch = %c a = %d ft = %f \n",ch, a, ft);

常量总结
字面常量 int float… 宏常量 常变量 枚举常量
#include : 包含
#define PI 3.14 : 替换(后面不加分号)
预编译时候 对define进行替换 .i文件 就已经进行了define替换

const 关键字 永恒不变
const int a = 10: // a 不能再次对a赋值 const 放在类型(int)前后都可以

int const a = 10; // 函数内为局部常变量 函数外全局变量
int const a;
c语言中 函数内局部变量未初始化 -> 为随机值; vs2019:局部变量未初始化是不允许读取的(但可以编译通过)
函数外全局变量未初始化 -> 为0
c++语言中 函数内外变量 未初始化 是编译不通过的
const int len = 10;
int ar[len]; // c中 [ ]内只能放常量,const为常变量也是不被允许的
// c++中 常变量可以当作常量使用 (与宏类似)

在预编译时开始替换 是替换不开空间 不会对类型进行检查
常变量 在编译时开始替换 是变量开空间 会对类型进行检查
常变量比宏更加安全

枚举类型 枚举常量 只能给整形(正负都可)若未初始化 下一个枚举元素是上一个值加1
int wx; // 1 2 3 4 5 6 7
限制取值范围

enum week { mon = 1, tue = 2, wed = 3, thu = 4, fri, sat, sun};
// 枚举元素 mon 
int main()
{
	enum week wx; // 枚举变量 取值范围:枚举元素
	wx = mon; // 1
	wx = sun; // 7
}

字符常量 字符串常量
字符 0-9 48-57
A-Z 65-90
a-z 97-122
空格 32
回车 13
换行 10
定界符 ’ (字符) " (字符串 \0结尾)

char cha = 'a'; // 存放的是97
char chb = 97;
printf("%d \n", cha); // 97
printf("%s \n", cha); // 97--> 'a'

转义字符 \ 可以将定界符转化成字符

char cha = 0; // 0 空字符 => 0
char chb = '0'; // '0' => 48
char chc = '\0'; // 0
char cdd = ' ' //空格 != 空字符

sizeof 空间大小 \0占空间
strlen 字符串长度 \0不算长度 只要字符串遇到\0就结束
在这里插入图片描述

“\141” ( \三位 八进制) => 97 => a
“\x66” (\x三位 十六进制)
在这里插入图片描述
1111 1111 => 255(十进制) => 377(八进制) 456超过了377所以不能编译通过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值