2

C语言#初识C语言 总结

 1 year ago
source link: https://blog.51cto.com/u_15949477/6047182
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1、数据类型

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

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

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

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

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

常量可分为字面常量,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码中查找对应字符,然后输出
注:在\后出现的第一个字母,会被认为是转义字符。

C语言#初识C语言 总结_结构体
C语言#初识C语言 总结_指针_02

注释
注释有两种风格/……/和//
//是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;
}

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;
}

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;
}
C语言#初识C语言 总结_c语言_03

– 前置、后置 - -
++ 前置、后置 ++

#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;
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK