文章目录
c语言头文件代码
#define _CRT_SECURE_NO_WARNINGS //防止会出现某个函数出现不匹配的情况。
#include <stdio.h>
#include<>
int main()
{
//写代码区域。
//记得写return0;
}
数据类型
%d -打印整型
%c -打印字符
%f -打印浮点数字 -小数
%s -打印字符串
%p -打印地址
字符,整型,浮点型
//字符:char
char ch='A';
printf ("%c\n",ch)
//整型 short int ; int ; long ;
///short int 短整型
///int 整型
///long 长整型
short int q = 5;
printf ("%d/n",q);
int w = 5;
printf ("%d/n",w);
long e= 5;
printf ("%d/n",e);
//浮点型
float f = 5.0;
printf ("%f/n",f);
//浮点型
float f = 5.0;
printf ("%f/n",f)
sizeof 展示字节大小
计算机中单位:字节
bit 比特位:存放一个二进制位
byte 字节:1 byte = 8 bit
kb:1 kb =1024 bit
变量 常量
int age = 20;
float weight = 95.6f; //防止出现警告
变量
变量:全局变量 /局部变量
全局变量:定义在({})以外的变量
局部变量:定义在({})以内的变量------作用域:局部变量所在的局部范围
int a= 100; //全局变量
int main ()
{
int b = 20; //局部变量
}
/// 全局变量与局部变量可以同时存在,但当两者名字一样的,局部变量>全局变量。
// 建议全局变量与局部变量的名称不要相同。
变量的使用
//计算两个数的和
int num1 = 0;
int num2 = 0;
scanf("%d%d",&num1,&num2);
int sum = 0;// c语言规定,变量要定义在当前代码块的最前面【最好就是把这句话写到定义的位置】
sum =n um1+num2;
printf("sum = %d/n",sum);
return 0;
//输入数据--使用输入函数
//输入函数: scanf("%变量类型”,&变量名称)
变量的作用域和生命周期
作用域:
全局变量的作用域是整个工程。
局部变量的作用域是变量所在的局部范围。
生命周期:
全局变量的生命周期:整个程序的生命周期
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
常量
const修饰的常变量
//const 后,num后续不可以修改。
const int num =4;
define定义的标识符常量
#define Max 10 //define定义的标识符常量
int main(){
printf("%d\n",MAX);
return 0;
}
枚举常量:可以一一列举
//性别:男,女,
//三原色:红、黄、蓝
//星期: 1,2,3,4,5,6,7
enum Sex
{
MALE;
FEMALE;
}
int main()
{
printf("%d\n",MALE);
printf("%d\n",FEAMALE);
return 0;
}
>>>>>>输出结果:
0
1
字符串+转义字符+注释
字符串
字符串的结束标志是一个\0 的转义字符。
在计算字符串长度的时候 \0 是结束标志,不算作字符内容。
//字符串类型
//int float
//char
int main()
{
char arr1[]="abc";//char类型的数组进行存放数组
//"abc"---'a','b','c','\0' 默认有一个\0
//【为了防止会出现“烫烫烫烫“的问题,最好在字符输出时候加上'\0'作为结束标志】
char arr2[]="hello world";
char arr3[]={
'A','B','C'};
printf("%s\n",arr1);//简单输入输出
printf("%s\n",arr2);
printf("%s\n",arr3);
return 0;
}
>>>>>>输出结果:
abc
hello world
ABC
strlen() 计算字符串的长度
>>>>>> 输出结果:
3
随机值
转义字符
\t ----水平制表符【相当于键盘上的tab】
\\ ----用于表示一个反斜杠,防止它被解释为一个转义序列符.
\" ----用于表示一个字符串内部的双引号
\b -----退格符
\n -----换行
\r -----回车
\ddd ---ddd表示1-3个八进制的数字 。 例如:\130x
\xdd ---dd表示2个十六进制数字。例如:\x30
\ddd的含义详解: —ddd表示1-3个八进制的数字
【\32】 32是2个8进制数字
//3 2 作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符
//32 -- 》 10进制 26 - -》作为ASCII码值代表的字符是“->”
\xdd的含义详解:—dd表示2个十六进制数字
【\61】 61是2个16进制数字
//6 1 作为16进制代表的那个十进制数字,作为ASCII码值,对应的字符
//6 1 -- 》 16进制 97 - -》作为ASCII码值代表的字符是“a”
注释
1.代码中有不需要的代码可以直接删除,也可以注释掉
2.代码中有些代码比较难懂,可以加一下注释文字
方法①
//某句单独注释
方法②
/*
某段注释
*/
选择语句
if .... else....
循环语句
while语句
for语句
do ... while语句
函数:库函数/自定义函数
//自定义函数:Add函数
Add(int x,int y)
{
int z = x+y;
return z;
}
int main()
{
int a =100;
int b=1;
int num = 0;
sum = Add(a,b);
printf("sum= %d\n",sum);
return 0;
}
数组:一组相同类型元素的集合
数组下标从0开始
//定义一个整形数组,最多放10个元素
int arr[10] = {
1,2,3,4,5,6,7,8,9,10};
//创建数组
int arr[] = {
0,1,2,3,4}
int arr[10]={
0}
//打印单独的数组元素
printf("%d\n",arr[4]);//下标的方式访问元素
arr[下标];
//打印全部数组的元素
//打印 0-9的元素
int i=0;
while(i<10)
{
printf("%d ",arr[il);
i++;
}
操作符
算术操作符:+ - * /('除'得到的商) %('取模'得余数)
移(2进制)位操作符:>>(右移:乘2) << (左移 :除2)
位操作符: &(按位与) ^(按位或) |(按位异或)
赋值操作符:=, += , -=
单目操作符:!(逻辑反操作),+,&(取地址),sizeof,~(二进制按位取反),
--,++,&(间接访问操作符(解引用操作符)),()(强制进行类型转换)
逻辑操作符:&&(逻辑与),||(逻辑或)
关系操作符:>, >=, < , <=, !=, ==
条件/三目操作符:exp1 ? exp2 : exp3(exp1是真,运行exp2; exp1为假,运行exp2)
下标引用、函数调用和结构成员:[ ], (), . ,->
单目操作符: sizeof
单目操作符:~(按二进制位取反)
单目操作符: --:前置–,后置–
//后置--:先使用,再--
int main(){
int a = 10;
int b = a--;
printf("a=%d b=%d\n",a,b);// a= 9 b=10
return 0;
}
//前置--:先--,后使用
int main(){
int a = 10;
int b = --a;
printf("a=%d b=%d\n",a,b);// a= 9 b=9
return 0;
}
单目操作符:++:前置++,后置++
前置++:先++,后使用
后置++:先使用,再++
//后置++:先使用,再++
int main(){
int a = 10;
int b = a++;
printf("a=%d b=%d\n",a,b);// a= 11 b=10
return 0;
}
//前置++:先++,后使用
int main(){
int a = 10;
int b = ++a;
printf("a=%d b=%d\n",a,b);// a= 11 b=11
return 0;
}
逻辑操作符:&& - 逻辑与(全真为真)
int main(){
//真 - 非0
//假 - 0
//&& - 逻辑与
int a =9;
int b = 5;
int c=a&& b;
printf("c= %d\n",c); // c = 1
return 0;
}
逻辑操作符:|| - 逻辑或(有真为真)
int main(){
//真 - 非0
//假 - 0
//|| - 逻辑或
int a =0;
int b = 5;
int c=a || b;
printf("c= %d\n",c);//c = 1
return 0;
}
条件操作符:exp1 ? exp2 : exp3
int main(){
int a=10;
int b = 20;
int max = 0:
if (a>b)
max =a;
else
max = b;
//max=(a>b ?a:b) //a>b的话,输出a;否则输出b
return 0;
}
常见关键字
关键字 static
static是用来修饰变量和函数的
1.修饰局部变量-静态局部变量:局部变量的生命周期变长
2.修饰全局变量-静态全局变量:改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了原函数就没办法再使用了。
3.修饰函数-静态函数:改变了函数的链接属性----外部链接属性-->内部链接属性
void test(){
int a = 1;
a++;
printf("a= %d\n" ,a);
}
int main(){
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
>>>>>输出结果:
a=2
a=2
a=2
a=2
a=2
加上static后:修饰局部变量-静态局部变量:局部变量的生命周期变长
void test(){
static int a = 1; //static 修饰局部变量//局部变量的生命周期变长
a++;
printf("a= %d\n" ,a);
}
int main(){
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
>>>>>输出结果:
a=2
a=3
a=4
a=5
a=6
#define定义常量和宏
//#define 定义标识符常量
#define MAX 100
//#define 可以定义宏-带参数
#define MAX(x,y) (x>y?x:y)
指针
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
int main(){
int a = 10;
p = &a;
printf("%p\n",&a);//有一种变量是用来存放地址的-指针变量
return 0;
}
int main(){
int a = 10;//创建变量啊,大小为4个字节
int* p = &a; //取a的地址,存放到p里面
printf("%p\n",&a);//有一种变量是用来存放地址的-指针变量
printf("%p\n",p);
*p=20; // 解引用操作符 //把20放到p里面去,此时p里面存放的a的数值是20
return 0;
}
结构体
//输入函数: scanf(“%变量类型”,&变量名称)
//输出函数:printf(”%变量类型",变量名称)
// ‘\n’ 换行符
// ‘\0’ 字符串的结束标志
// sizeof() 查看字符类型
// strlen() 计算字符串的长度
//求两个数目中的较大值
int MAX(int x,int y){
if(x>y)
return x;
else
return y;
}
int main(){
int num1=10;
int num2=20;
int max=0;
max=MAX(num1,num2);
printf("MAX= %d\n",max);
return 0;
}