共计 4115 个字符,预计需要花费 11 分钟才能阅读完成。
指令
#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; // 完结 | |
} |
正文完