某985金统系大一零基础纯小白,这是我自己这两个星期对c语言初次认识的结果与总结。初始C语言不必深究,先知道有这么个东西就行。就像高考数学一样,没有人直接上来就一轮,都是先粗略地整体学完再进行深究(别杠我呜呜我真的就这样学的)
①是一门通用计算机编程语言,广泛应用于底层开发。
②硬件——驱动层——操作系统(windows linux mac)——应用软件
③操作系统之上称为上层软件 以下称为底层
④二进制的指令——汇编指令(助记符)——B语言——C语言
⑤为了统一C语言语法,美国国家标准局制定了ANSI C 目前2011年发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准
⑥编译器(将代码翻译成能让电脑执行看得懂的命令)主要有Clang、GCC、MSVC(VS2019就是用这个)
编译器:将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器
1.打开空项目
2.【视图】—【解决资源管理器】
3. 创建源文件(.c为后缀的叫源文件 .h叫头文件)
【源文件】-【添加】-【新建项】
①不允许在同一个作用域中定义多个相同名称的变量
比如:在一个班级中存在两个名字相同的学生王帅,当老师点王帅回答问题时,那个回答就冲突了。
②允许在不同的作用域中定义多个相同名称的变量
比如:两个班级中各有一个王帅,老师在A班中点王帅回答问题,不会有任何歧义。
③当局部变量和全局变量同名的时候,局部变量优先使用。
如果有来自其他地方的全局变量
用extern 变量类型 变量名字;
①字面常量 ②const修饰的常变量 ③#define定义的标识符常量 ④枚举常量
#include
//建议自己复制粘贴过去实操一遍
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的
①打开everything搜索newc++
②找到文件并且打开路径
③拷贝文件到桌面 用记事本打开后复制粘贴那行代码
④用vs打开桌面上这份文件并且ctrl+s保存下来即可
⑤再用桌面文件替换原来那份newc++文件
<stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "bit";
char arr2[] = {'b', 'i', 't'};
char arr3[] = {'b', 'i', 't', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
空格也算是一个字符 \t也只算一个字符
转义字符 释义
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量'
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd表示1~3个八进制的数字。 如: \130 X
\xdd
dd表示2个十六进制数字。 如: \x30 0
#include
int main()
{
int coding = 0;
printf("你会去敲代码吗?(选择1 or 0):>");
scanf("%d", &coding);
if(coding == 1)
{
prinf("坚持,你会有好offer\n");
}
else
{
printf("放弃,回家卖红薯\n");
}
return 0;
}
//while循环的实例
#include
int main()
{
printf("下载vs2019\n");
int line = 0;
while(line<=20000)
{
line++;
printf("我要继续努力敲代码\n");
}
if(line>20000)
printf("好offer\n");
return 0;
}
#include
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
上述代码,写成函数如下:
#include
int Add(int x, int y)
{
int z = x+y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0;
}
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
//如果不知道数组提前占多少内存
//就直接arr[]里面什么都不写即可
数组的初始化如果未完全 则会自动填充\0
#include
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
按下ctrl+f10之后(笔记本电脑按ctrl+fn+f10)
int c =a>b?a:b;
//如果a>b的结果为真就输出a
//如果a>b的结果为假就输出b
顾名思义:就是对类型进行重命名
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//观察num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0;
}
#关键字void表示这个函数没有return返回值
#而加入了static之后:
解释原因:计算机的内存分为了栈区、堆区和静态区;
再次强调:知道有这么个东西就行了现在!
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
int main()
{
int a = 10;//向内存申请了四个字节的内存空间 因为整型的大小是四个字节
//a占了四个字节所以有四个地址 这时候a的地址取出来的应该是第一个也就是最小的地址
&a;//取地址操作符 这样可以取出a的地址 用调试查看地址
printf("%p\n", &a);//%p是以地址的形式来打印
int* p =&a;//用int*类型存储a的地址到变量p中,此时p被称为指针变量
//存放地址的变量被称为指针变量 指针=编号=地址
return 0;
}
0a 00 00 00
08 09 0a 0b
所以下面一行是0c
10进制由0、1、2、3、4、5、6、7、8、9 十个数字组成
8进制则是0-7
2进制是0-1
16进制是0-9、A-F
32bit位电脑:4byte;
64bit位电脑:8byte;
- struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);