C语言#初识C语言 总结

时间:2023-02-09 18:16:21

1、数据类型

char-字符类型、int-整形、short-短整型、long-长整形、long long-更长的整形、float-单精度类型、double-双精度类型、

2、常量、变量、全局变量、局部变量

常量是固定不变的值。 变量是可以变换的值。

#include<stdio.h>
int main()
{
	int a=10;
	//这里的a就是变量
	//数字10就是常量
	return 0;
}

在变量中可分为全局变量和局部变量 全局变量是指定义在{}之外的变量。 局部变量是指定义在{}之内的变量。 ==注:局部变量的权重比全局变量高。例如局部变量和全局变量的变量名相同,但值不同。同时输出时将输出局部变量的值。当局部和全局的变量名相同也会更容易出现bug,所以尽可能不要变量名相同。

3、常量

常量可分为字面常量,const修饰的常变量,#define标识符常量,enum枚举常量 字面常量

#include<stdio.h>
int mian()
{
	int a=10;
	//a和10就是我们常见的普通变量和常量。
	3;
	//这里的3就是字面常量
	return 0;
}

const 修饰的常变量

#include<stdio.h>
int mian()
{
	const int a=10;
	//在变量的最前面添加const,使得变量增加的常属性,从而无法修改变量的值。
	num=20;
	printf("%d\n",num);
	//此时输出时,20将无法替换掉10,并且提示报错。
	return 0;
}

#define 标识符常量

#include<stdio.h>
#define add 10;
int mian()
{	
	int a=add;
	printf("%d\n",a);
	return 0;
}

enum 枚举常量

#include<stdio.h>
enum
{
	red,
	yellow,
	blue,
	//;输出结果是0 1 2 以此类推。
};
int mian()
{
	enum color c=red;
	printf("%d\n",red);
	return 0;
}

4、字符串+转义字符+注释

字符串 字符串是指有多个字符组成的 注:字符串输出时需要使用%s进行输出。 strlen 计算字符串的长度

#include<stdio.h>
int main()
{
	int arr[]='abc';
	printf("%s\n",arr);

	int arr[]='a','b','c','\0';
	printf("%s\n",arr);
	pritf("%s\n",strlen(arr));
	return 0;
}

\0就是一个转义字符,代表这字符串的结束,但并不能算做字符串内容。

\ddd、\x1,=dd \ddd是指/后面是三个八进制的数字 \xdd是指/x后面是两个十六进制的数字

#include<stdio.h>
#include<string.h>
int main()
{
	printf("%c\n",strlen("c\test\32\test.h“));
	printf("%c\n",strlen("c\test\x32\test.h"));
	return 0;
}

\ddd是指先由八进制转换为十进制后,在标准ANSII码中查找对应字符,然后输出 \xdd是指先由十六进制转换为十进制后,在标准ANSII码中查找对应字符,然后输出 注:在\后出现的第一个字母,会被认为是转义字符。

::: hljs-center

C语言#初识C语言 总结

C语言#初识C语言 总结

:::

注释 注释有两种风格/……/和// //是c++的注释风格,可以注释单行或多行 /……/是c的注释风格,缺陷是不能嵌套注释

5、选择语句、循环语句

if()else

#include<stido.h>
int main()
{
	int a=0;
	if(a<5);
		printf("a小于5\n");
	else
		printf("a大于5\n");
	return 0;
}

while()

#inlcude<stdio.h>
int main()
{
	int a=0;
	while(a<5)
	{
		a++;
		printf("a=%d\n",a);
	}	
	if(a=5)
		printf("a是6\n");
	return 0;
}

6、函数

add[]-自定义函数

#include<stdio.h>
int add(int x,int y)
{
	z=x+y;
	return z;
}
int main()
{	
	int a=10;
	int b=20;
	int jg=z(a,b);
	printf("%d\n",jg);
	return 0;
}

7、数组

add[]

#include<stdio.h>
int main()
{
	int add[]={1,2,3,4,5,6,7,8,9};
	    //下标:0,1,2,3,4,5,6,7,8
	printf("%d\n",add[2]);//这是输出add数组中指定的某一个数字。输出时按照下标进行输出
	return 0;
}

8、操作符

算术运算符 + - * / % 移(二进制)位操作符 >> <<

#include<stdio.h>
int main()
{
	int a=1;
	int b=a<<1;
	//这句话的意思是a的二进制位向左移一位,再将值赋给b。
	printf("%d\n",b);
	return 0;
}

(二进制)操作符 &按位与 计算方法:0遇到0结果为0.1遇到1结果为1,1遇到0结果为0。

|按位或 计算方法:0遇到1结果为1,1遇到1结果为1,0遇到0结果为0

^按位异或 计算方法:0遇到1结果为1,1遇到1结果为0,0遇到0结果为0

赋值操作符 = += -= /= &= ^= |= >>== <<== 这些赋值操作符也叫做复合操作符。

==在c语言中非0代表真,0代表假== !逻辑操作符 !的意思是将非0数的数值变成0,0变成1

#include<stdio.h>
int main()
{
	int a=10;
	int b=!a;
	printf("%d\n",b);
	return 0;
}

~ 对一个数的二进制按位取反

#include<stdio.h>
int main()
{
	int a=0;
	int b=~a;
	printf("%d\n",b);
	return 0;
}

::: hljs-center

C语言#初识C语言 总结

::: -- 前置、后置 - - ++ 前置、后置 ++

#include<stdio.h>
int main()
{
	int a=10;
	int b=--a;
	int b=a--;
	int b=++a;
	int b=a++;
	return 0;
}

当- -或+ +在a前面时,需要a先-1或+1,再将a的值赋给b 当- -或++在a后面时,需要a先将值赋给b,再将-1或+1

(类型)强制类型转换

#include<stdio.h>
int main()
{
	int a=(int)3.14;
	return 0;
}

使用()进行类型强制转换,()中放入int,将3.14的双精度转为整形。

关系操作符

,>=,<,<=!=,== !=用于测试不相等 ==用于测试相等

逻辑操作符 &&逻辑与

#include<stdio.h>
int main()
{
	int a=10;
	int b=20;
	int jg=a&&b;
	printf("%d\n",jg);
	return 0;
}

&&逻辑与的意思是指:a是非0吗?b也是非0吗?两边数值都是非0的情况下输出1。

||逻辑或

#include<stdio.h>
int main()
{
	int a=10;
	int b=20;
	int jg=a||b;
	printf("%d\n",jg);
	return 0;
}

||逻辑或的意思是:两个数值任意一个数是非0数就输出1。

条件操作符 exp1,exp2,exp3……expN 由逗号隔开的就是逗号表达式。

下标引用、函数调用和结构成员。 [],(),·,->

9、常见关键字

auto,break,case,char,const,,continue,defauit,do,double,else,enum,extren,float,for,got,if,int,long,register,teturn,sjort,signed,sizeof,static,struct,switch,stypedef,union,unsigned,void,volatile,while,

==注:自定义变量不可以和关键字相同== auto 自动变量

#include<stdio.h>
int main()
{
	auto int a=10;
	return 0;
}

auto自动变量是指在大括号中自动生效,离开大括号自动失效。但是每个变量都有自动变量,所以省略不显示了

register 寄存器变量

#include<stdio.h>
int main()
{
	register int a=10;
	return 0;
}

register寄存器变量是指使用寄存器变量可以使变量存在寄存器中,可以使我们更快的调用这个函数,但是register只是向寄存器申请,因为想要快速读取或调用的变量太多,具体是否可以存放到寄存器中,需要由寄存器判断。

signed 定义有符号的变量 unsigned 定义无符号的变量

#include<stdio.h>
int main()
{
	signed int a=-10;
	unsigned int a=10;
	return 0;
}

signed可以输出负数或正数 unsigend只能输出正数。

typedef 类型重定义

#include<stdio.h>
int main()
{
	typedef unsigned int =u_int;
	u_int a=10;
	return 0;
}

typedef是将名字长度过长的类型起一个较短的别名,方便我们后续使用这个类型。

static 静态 extern 声明外部函数 static 修饰局部变量

#include<stdio.h>
int test()
{
	static int b=1;
	b++;
	printf("%d\n",b);
}
int main()
{	
	int a=0;
	while(a<5)
	{
		test();
		a++;
	}
	return 0;
}

static修饰全局变量

//文件1
#include<stdio.h>
int main()
{
	extern a;
	int b=a;
	printf("%d\n",b);
	return 0;
}
//文件2
strtic int a=10;

strtic修改函数的链接属性

//文件1
#include<stdio.h>
extern int add(int x,int y);
int main()
{
	int a=10;
	int b=20;
	int jg=add(a,b);
	printf("%d\n",jg);
	return 0;
}
//文件2
int add(int x, int y)
{
	int z=x+y;
	return z;
}

#define 定义了宏和常属性 #define增加常属性

#include<stdio.h>
#define b 20;
int main()
{
	int a=10;
	return 0;
}

#define 定义了宏 ==注:使用宏是,宏名一般都是大写==

#include<stdio.h>
#define JG(x,y)(x>y?x:y)
int main()
{
	int a=10;	
	int b=20;
	int jg=ADD(a,b);
	return 0;
}

10、指针

  • 定义指针变量和解引用
#include<stdio.h>
int main()
{
	int a=10;
	int*p=a;
	*p=20
	return 0;
}

指针的大小 指针的大小在32位平台是4个字节,64位平台是8个字节

11、结构体

struct 结构体 strcpy 字符串拷贝 需要搭配string .h使用 ==注:strcpy在vs2022中使用会报错,需要搭配#pragma warning(disable:4996)使用。==

#include<stdio.h>
#include<string.h>
struct ren
{
	char xm[10];
	char xb[10];
	short nl;
	short tz;
}
int main()
{
	struct ren r={"小明","男",18,75};
	prinft("%s\n",r.char);
	//这是经常使用的输出方法。
	struct ren* p=r;
	printf("%s\n",(*p).xm);
	printf("%d\n",p->nl);
	//这是使用指针输出的方法。
	strcpy(r.xm,"小王");
	//这是使用字符串拷贝替换内容的方法。
	return 0;
}