ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
指令
#define _CRT_SECURE_NO_WARNINGS //保证scanf函数能够正常运行
#include <stdio.h> //函数printf使用
#include <string.h> //函数strlen使用
关键词
getchar()
while(1)
char
short
int
long
long long
float
double
scanf
printf
extern
const
arr[](数组)
strlen
模板
//编写代码的文件
#include <stdio.h> //编译预处理指令
//main函数是程序的入口
//main函数有且只有一个
int main() //定义主函数
{ // 函数开始的标志
printf("hello world"); //输出所指定的一行信息
//防止程序闪退,我们要观看运行结果
// getchar(); //获取一个字符,不输入就会一直等待
//或
// while(1); //通过死循环来卡住程序,防止闪退
return 0; //函数执行完毕时返回函数值0
} //函数结束的标志
数据类型
char //字符数据类型
short //短整型
int //整形
long //长整形
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
数据类型所占内存空间的大小
{
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
return 0; //结束
}
计算机中的单位
bit(比特位)-->byte(字节)-->kb-->mb-->gb-->tb-->pb
1byte = 8bit
1kb = 1024byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
1pb = 1024tb
类型的使用
{
//类型 变量 = 数据
char = 'w';
int age = 20;
return 0; //结束
}
全局变量和局部变量
#include <stdio.h> //预处理指令
int num = 10; //全局变量
int main() //主函数
{
int num = 10; //局部变量
printf("num=%d\n", num); //全局变量名与局部变量名相同时,局部优先
return 0; //结束
}
全局变量 - {}外部定义的变量
局部变量 - {}内部定义的变量
{}内不能定义相同的变量名
不建议全局变量名与局部变量名一样
变量的使用
{
//初始化
int num_1 = 0;
int num_2 = 0;
//输入函数
scanf("%d %d", &num_1, &num_2);
//求和
int sum = num_1 + num_2;
//输出函数
printf("%d\n", sum);
return 0; //结束
}
在源文件的第一行放
#define _CRT_SECURE_NO_WARNINGS //保证scanf函数能够正常运行
在VS工程中创建新的.c或者.cpp文件的时候,都是拷贝newc++file.cpp这个文件的!在此文件添加的数据,创建新源文件都会存在!
方法:在VS的安装路径下有一个文件 newc++file.cpp 的文件,通过everything搜索查找到并打开路径,复制此文件到桌面修改,修改后替换原文件
变量的作用域
局部变量
局部变量的作用域是:变量所在的局部范围
全局变量
全局变量的作用域是:整个工程
声明来自外部的符号(都是源文件)extern int num;
变量生命周期
局部变量
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
全局变量
全部变量的生命周期是:整个程序的生命周期
常量的分类
#define _CRT_SECURE_NO_WARNINGS //保证scanf函数能够正常运行
#include <stdio.h> //预处理指令
//字面常量
//const修饰的常变量
//define定义的标识符常量
//枚举常量
//define定义的标识符常量(在这里定义)
#define MAX 100
#define STR "abcdef"
//枚举常量(在这里定义)
enum Color
{
//这三个就是枚举常量
RED,
GREEN,
BLUE
};
enum Sex
{
//这三个就是枚举常量
MALE,
FEMALE,
SECRET
};
int main() //主函数
{
//int num = 10; //字面常量
//const修饰的num,本质是变量,但是不能直接修改,有常量的属性
const int num = 10; //const修饰的常变量
//num = 20; //err,有const修饰,num不能被修改
printf("%d\n", num); //10
//define定义的标识符常量(在这里使用)
printf("%d\n", MAX); //100
int num_1 = MAX;
printf("%d\n", num_1); //100
printf("%s\n", STR); //abcdef
//枚举常量(在这里使用)
//三原色 Red Green Blue
//创建一个变量
int num_2 = 10;
enum Color num_3 = RED;
return 0; //结束
}
字符串
% c 打印字符
% s 打印字符串
% d 打印整型
% f 打印float类型的数据
% lf 打印double类型的数据
% zu 打印sizeof的返回值
#define _CRT_SECURE_NO_WARNINGS //保证scanf函数能够正常运行
#include <stdio.h> //函数printf使用
#include <string.h> //函数strlen使用
int main() //主函数
{
//char 字符类型 单引号是字符,双引号是字符串
char num = 'w'; //字符
//"abcdef" 字符串 arr[] 数组
//字符串可以直接使用printf()打印
//知道或者限制字符串长度,即将数值填写于[]中
//不知道则为空,根据字符串长度自动调整
//查看值:点击F10(逐过程), 知道return0 --> 调试 --> 窗口 --> 监视 --> 1,2,3,4都可以,查看结果arr会多一个值:'\0'
// \0表示字符串结束,并不在字符串内容中
char arr[ ] = "abcdef"; //a b c d e f \0
char arr_1[ ] = { 'a', 'b', 'c', 'd', 'e', 'f'}; //a b c d e f
char arr_2[ ] = { 'a', 'b', 'c', 'd', 'e', 'f','\0'}; //a b c d e f \0
//字符串只有遇到\0才会结束(\0的重要性一)
printf("%s\n", arr); //abcdef
//printf("%s\n", arr_1); //abcdef烫烫烫烫烫abcdef
printf("%s\n", arr_2); //abcdef
//求字符串长度的一个函数 头文件 string.h
int len = strlen("abc");
printf("%d\n", len); //3
//(\0的重要性二)
printf("%d\n", strlen(arr)); //6
printf("%d\n", strlen(arr_1)); //22
printf("%d\n", strlen(arr_2)); //6
return 0; //结束
}
转义字符
转义字符在字符串中仅表示一个长度,即一个字符
\ ? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\0 字符串终止
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1 - 3个八进制的数字。如: \130(八进制)->X(ASCII值)
\xdd dd表示2个十六进制数字。如 : \x -> 300
ASCII编码
{
//\ 转义符 转变了字符原来的意思
//\? ??) => ] 三字母词 现在编译器极少有
//printf("%s\n", "(are you ok\?\?)"); //(are you ok??)
//printf("%s\n", "(are you ok??)"); //(are you ok]
//\'
//printf("%c\n", '\''); //'
//printf("%c\n", 'w''); //err
//\"
//printf("%s\n","ab\"c"); //ab"c
//printf("%c\n", "ab"c"); //err
//\\
//printf("ab\\0c"); //ab\0c
//printf("ab\0c"); //ab
//\a
//printf("\a"); //会有系统提示音
//\b,\f和\v 没有什么用
//\n 换行
//printf("abc\n"); //abc
//printf("abcn"); //abcn
//\0 只取\0以前的字符串
//printf("abc\0def"); //abc
//\r 只取\r以后的字符串
//printf("abc\rdef"); //def
//\t 从开头到第8位
//printf("ab\\tcdef\n"); //ab\tcdef
//printf("ab\tcdef"); //ab def
//\ddd
//八进制的130
//printf("%c\n", '\130'); //X
//\xdd
//先将16进制的30转化为十进制,再对照ASCII表
printf("%c\n", '\x30'); //0
return 0; //结束
}
注释
{
//c语言的注释风格(嵌套注释时有缺陷)
/*
prinf("hello world")
*/
//c++的注释风格(建议)
//这段代码不要了就注释(第一种注释,即不要运行)
//printf("%s\n", "NO!")
//创建指针变量p,并赋值为NULL(第二种注释,即解释此段代码的意思)
int* p = NULL;
return 0; //结束
}