指令
#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; // 完结
}