2023年3月12日开始学习!!!
一:初识C语言
国内:码云。 国外:github Xmind-思维导图软件
新建原文件:
xxxxx.c-源文件
xxxxx.h-头文件
写代码
1.写出主函数(main函数)
main叫函数名 {}叫函数体 int 叫函数返回类型 (int是整形(就是整数)的意思)
int main()
{
return 0;
}
// 编辑+运行+运行代码
//快捷键:ctrl+F5
1.一个工程中可以有多个.c文件
2.但是多个.c文件中只能有一个main函数
二:初识数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点数
double //双精度浮点数
计算机中的单位:
bit-比特位
byte-字节=8bit
kb-1024byte
mb-1024kb
gb-1024mb
tb-1024gb
pb-1024tb
3.14
2.变量,常量
//%d----整型
//%f-----float
//%lf------double
变量的分类:
局部变量-----{}内部的变量
全局变量-----{}外部的变量
当局部变量和全局变量冲突的情况下,局部优先
scanf报错误
变量的作用域和生命周期
生命周期
局部变量生命周期:进入作用域生命周期开始,出作用域生命周期结束
全局变量生命周期:整个程序的生命周期
3.15
常量
枚举常量enum Sex
字符串+转义字符+注释
字符串就是一串字符,用双引号括起来的一串字符
转义字符:转变了他原来的意思
八进制转化成十进制
注释
解释复杂代码
3.16
选择语句
if else
循环语句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
// int input = 0;//输入的值
// printf("加入比特:>\n");
// printf("那要好好学习吗(0/1)?>:");
// scanf("%d", &input);
//
// if (input == 1)
// printf("好offer\n");
// else
// printf("卖红薯\n");
//
//
// return 0;
//
//}
int main()
{
int line = 0;
//循环
while (line < 30000)
{
printf("写代码:%d\n", line);
line++;
}
if (line == 30000)
{
printf("好offer\n");
}
return 0;
}
3.27
函数和数组
1.函数
数组:一组相同类型元素的集合
arr[10]={1,2,3,4,5,6,7,8,9,10}-----常量数组
char ch[]----------字符数组
4.9
操作符
数字操作符 %--取模(取余)
移位操作符<< >> 移动的是二进制位
位操作符:
&:按位与
|:按位或
^:按位异或
赋值操作符
~对一个数的二进制位取反
整数在内存中储存的是补码
一个整数的二进制表示有三种
原码
反码
补码 针对负数
-1 正整数-原码反码补码相同
10000000000000000000000000000001(原码)符号位不变其他位按位取反
1111111111111111111111111111111111110(反码)取反+1
1111111111111111111111111111111111111(补码)
// //int a = 10;
// //int b = ++a;//前置++ ---先++,后使用
// //printf("%d\n", b);//11
// //printf("%d\n", a);//11
// //int a = 10;
// //int b = a++;//后置++ ---先使用,再++
// //printf("%d\n", a);//11
// //printf("%d\n", b);//10
条件操作符(三目操作符)
? :
exp1成立,exp2计算,整个表达式的结果是:exp2的结果
exp1不成立,exp3计算,整个表达式的结果是:exp3的结果
逗号表达式:逗号隔开的一串表达式
4.10
关键字
auto 是自动的-每个局部变量都是auto修饰的
extern 是用来申明外部符号的
register 寄存器关键字
4.12
signed 有符号的 10 -20
unsigned 无符号的
static 静态的
union 联合体(共用体)
void 无-空
typedef 类型重定义
static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)
全局变量在整个工程中都可以使用
static修饰全局变量,使得全局变量只能在自己所在的源文件(.c)内部可以使用
其他源文件不能使用;
全局变量,在其他源文件内部可以使用,是因为全局变量具有外部连接属性
但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了!
static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用
本质上:static时将函数的外部链接属性变成了内部链接属性!(和static修饰全局变量一样)
4.13
define 定义常量和宏
初识指针:
内存:内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。
所以为了 有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
为了能够有效的访问内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
1.内存是怎么编号的?
2.一个这样的内存单元是多大空间?
32位 - 32跟地址线 - 物理线 - 通电 - 1/0
64位
最终:一个内存单元是一个字节,然后分配地址的
%p专门用来打印地址
&取地址操作符
*解引用操作符
指针变量的大小
64位下
指针的大小是相同的!
为什么呢?
指针是用来存储地址的!
指针需要多大空间取决于地址的存储需要多大空间
结论:指针大小在32位平台是4个字节,64位平台是八个字节
初始结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力面熟复杂类型
.操作符:结构体变量.成员变量
%s用来输出一个字符串