目前师从b站鹏哥,还请各位学长学姐多多指正错误
一、c语言框架
1. 必须包含唯一主函数(优先运行):
int main()
{
return 0;
}
2. 语句要用";"结尾,如上面的return
3.变量必须先定义(大多时候要初始化/赋值)
int a = 0;
4.大多操作需要引用头文件才能实现(如printf),一般放在代码最开头
#include<stdio.h>
#include<math.h>
5.简单自带函数
int main()
{
int n1 = 0;
int n2 = 0;
scanf_s("%d %d" , &n1, &n2); //输入函数,""中表示输入的类型。&代表引用地址,
//将输入的量存储在对应的变量中
int sum = n1 + n2;
printf("%d\n", sum); //输出函数,如上,","后面的量替换%d输出
return 0;
}
二、数据类型与格式说明符
整型类:int,short,long,long long {%d}
浮点型:float,double{%f,%lf}
字符型:char(用' '括住字符," "括住字符串且要用数组形式){%c,%s}
#include<stdio.h>
int main()
{
char a1 = 'l';
char a2[10] = "lu";
return 0;
}
三、变量与常量
1.变量(我认为可以类比为数据)
局部变量:在函数中,只在此函数中起作用,出函数销毁
全局变量:在函数外,在整个项目中起作用,不能在不同源文件中重复定义
2.常量(我认为可以类比为数字)
字面常量 :即'3.14' , '5'等
常变量:用const实现,不能直接修改,是具有常量性质的变量
标识符常量:如下
#define MAX 100
printf("max = %d\n", MAX);
四、字符串
1.可用数组存储
char arr1[] = { 'a', 'b', 'c','\0'};
char arr2[10] = {"abcdefg"};
2.结束标识”\0“
(1)字符串末尾自带隐藏的 \0
(2)用数组存储的多个字符,结尾无 \0 ,需要加上(如arr1),避免出错
五、转义字符
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\n 换行
\t 水平制表符
\v 垂直制表符
\ddd ddd 表示1~3个八进制的数字。 如: \130 X
\xdd dd 表示2个十六进制数字。 如: \x30 0
六、循环与选择
1.循环:while与for
while (a<10)
{
printf("good");
a++
}
for (int i ;i<10;i++)
{
print("nice");
}
2.选择:if ,if else,else
if (a == 1)
{
printf("you win!\n");
}
else
{
printf("you lose\n");
}
七、函数
1.用处:简化代码,代码复用
2.实现
#include<stdio.h>
int max(a, b); //函数在主函数后,需要声明
int main()
{
int x = 0;
int y = 0;
scanf("%d %d", &x, &y);
printf("%d\n", max(x, y));
return 0;
}
int max(int a, int b) //函数主体
{
if (a >= b)
return a;
else
return b;
}
八、关键字typedef与static
1.typedef:类型重命名
typedef int I;
I main()
{
return 0;
}
2.static:修饰变量与函数,将其放入(内部)静态区
(1)修饰局部变量:会使其不会被重复初始化
(2)修饰全局变量:会使其不能被外部(别的源文件)声明引用
(3)修饰函数:会使其不能在被外部(别的源文件)声明引用
下面还没怎么学懂,轻喷
九、指针
1.指针:计算机中内存被分为许多内存单元,并被标号,这些号码被称为地址,又叫指针,
其格式化字符为%p
2.指针函数:用函数来存储地址的方式,一般也可直接用“指针”代指
char a[] = "asdas";
char* p = &a;
3.特殊的,许多数据会用多个字节存储,但&a或p只会存储数据的第一个字节的地址
所以有:(&为取地址符,*为解地址符)
#include<stdio.h>
int main()
{
char a[] = "asdas";
char* p = &a; //指针
printf("%c\n", *p); //会输出"a"
return 0;
}
十、结构体
1.作用:创建一个新的类型(个人认为,可将int等类型认为是 normal int,与 struct xx,作对比)
struct MyStruct //结构体
{
char name[100];
int height;
int age;
int weight;
};
其中MyStruct为新类型名
2.用法:
struct MyStruct _1 = {"lu",180,18, 80};
//创建了结构体MyStruct变量_1
十一、代码笔记与代码练习(我用的VS2022)
tap hear11111111111111111111111111111111111111111111111111111111111111111111111111