编程旅行之初识C语言

本人是萌新小白,有错误之处,望大佬指出,不胜感激,谢谢!

一、什么是C语言

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

小知识:二进制只有0和1
八进制只有0,1,2,3,4,5,6,7
十六进制则是:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(a代表10,依次向后加一,十六进制只能到f,因为f是代表15,再加1就要逢16进1了)
二进制逢二进一(0001+1=0010)
八进制逢八进一(567+1=570)以此类推,多少位进制就逢多少位进一

二、C语言的数据类型

类型字节大小
char(字符型)1
short(短整型)2
int(整型)4
long(长整型)4/8
long long(更长的整型)8
float(单精度浮点型)4
double(双精度浮点型)8

类型打印
字符%c
字符串%s
整形%d
单精度浮点型%f
双精度浮点型%lf
取地址%p
无符号整数的16进制%x

三、C语言里面的常量与变量

1、定义变量:类型+变量名
例如:int n;
int就是类型,n就是变量名
2、变量分类
全局变量:既可以是某对象函数创建,也可以是本程序任何地方创建。全局变量是可以被本程序所有对象或者函数进行引用。
局部变量:局部变量也可以叫做内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用
注意当全局变量与局部变量存在名字相同的情况时,应该优先使用局部变量
3、变量的作用域
局部变量:作用于局部变量所在的局部范围
全局变量:作用于整个程序
4、生命周期(变量的生命周期是指变量创建到销毁的时间段)
局部变量:从进入作用域生命周期开始,出作用域生命周期结束。
全局变量:整个程序的生命周期。

第一个C语言程序:

#include<stdio.h>//包含stdio.h头文件的意思
                //#是预处理指令
				//include是“包含”的意思
				//#include "XYZ" 意思是将"XYZ"或者中的文件引用到本程式中来,其扩展名为.h。
int main()//main是主函数,程序执行总是从main函数开始
{
	printf("ni hao\n");//printf是打印,输出的意思,程序运行之后会打印括号中" "内的内容(ni hao)。\n的作用是把printf出来的结果换行
	return 0;//代表程序正常退出
}

常量:
1、字面常量:包括整形常量,字符型常量,字符串常量。

比如说:
include<stdio.h>
int main()
{
1;
2;
3;//等等这些都属于字面常量
return 0;
}
不能直接调试,会报错

2、const修饰的常变量:

include<stdio.h>
int main()
{
const int a = 10; // 此时a是一个常变量,也就是说a的本质属性是变量,但是const规定a是一个常量,此时a的值是不可以被改变的;
//a=20;//当你尝试改变a的值时,系统就会报错
printf("% d\n",a);
return 0;
}


3、#define定义的标识符常量

include<stdio.h>
i#define MAX 10 //#define定义了MAX的值为10
int main()
{
int arr[MAX] = { 0 };
printf("% d\n", MAX); //打印后的结果是10 表示MAX是一个常量
return 0;
}

4、枚举常量

//使用enum定义枚举型常量
#include<stdio.h>
enum sex
{
male,
famale,
secret,
}; //此处分号不可丢
int main()
{
int a = male;
int b = famale;
int c = secret;
printf("%d %d %d",a,b,c);
return 0;
} //此时输出的是0 系统会默认enum定义的是0,1,2,3…
上述enum是定义枚举常量的关键字,大括号内的内容就是枚举常量,如果不将大括号内的枚举常量赋值,则从第一个枚举常量开始默认为0,依次+1。

四、字符与字符串

字符:字符是指计算机中使用的==字母、数字、字和符号==,包括:1、2、3、A、B、C、~!·#¥%(==空格也是字符,表示空字符==)。
字符串:是由==数字、字母、下划线==组成的一串字符。字符串==结束标志是\0==的转义字符,在==计算字符串长度==时,==\0不算做字符串内容。==

五、转义字符

\?同时出现多个问号时,防止被解析成为三字母词
\’用于表示字符常量’
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止被解释为一个转义序列符
\a警号字符,峰鸣
\n换行
\b退格符
\f进纸符
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制数字。比如:\130X
\xdddd表示2个16进制数字。比如:\x300

在这里插入图片描述
上述图片中,\117长度是1。\117是\ddd类型的,而ddd是表示1~3个八进制数字,所以说如果ddd代表的三个数字都小于8,那么 \ 将117这3个数字都转义了。如果出现了数字大于等于8,\ 就将大于等于8的第一个数字的前面所有数字转义。如果3个数字都大于等于8,那么 \ 就转义一个数字。\ xdd同理。

六、注释

1、不需要的代码除了删除之外还可以注释掉。
2、可以在你所编译的代码旁边注释上中文,方便更多人能够看懂你的代码
注释的方法
1、/ 星号XXXXXX星号/(不能嵌套注释,使用的时候要注意)

/*#include<stdio.h>
#include<string.h>
int main()
{
	/*printf("%d\n", strlen("c:\test\999\test.c"));
	  printf("%d\n", strlen("c:\test\118\test.c"));
	*/
	printf("%d\n", strlen("c:\test\1177\test.c"));
	return 0;
}*/

上面的代码就是嵌套注释,是不可取的

2、//(双斜杠注释)可以注释一行或者多行

//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	printf("%d\n", strlen("c:\test\999\test.c"));
//	return 0;
//}

#include<stdio.h>
#include<string.h>
int main()
{
	//printf("%d\n", strlen("c:\test\999\test.c"));
	return 0;
}

七、语句

C语言有选择语句和循环语句两种
选择语句有两种:
1、if
{
};
当只有两种选择时可用:
if
{
};
else
{
};
当有多种选择时:
if
{
};
else if
{
};
else if
{
};

else if
{
};
else
{
};
注意:一个if语句里面只能用一个else不然会出错。
2、switch()
{
}
循环语句有三种
1、while语句
2、for语句
3、do
{
}while; (while后面要带分号“;”)


八、函数


#include<stdio.h>
int xxxx(int x, int y)//xxxx是我们自定义的一个求和函数
                     //int x和int y是形参
{
	int a = x + y;
	return a;//返回a值给c
}
int main()
{
	int x = 10;
	int y = 20;
	int c = xxxx(x, y);
	printf("%d", c);
}

注意:函数返回类型要与函数名前面的类型相同。

九、数组

int xxx[5]={1,2,3,4,5}

数组名是xxx,数组类型是int型,数组元素最多存放5个。记住,下标都是从0开始的,每个元素对应的下标是该元素在数组第多少位减1

十、操作符

算术操作符+,-,*,/,%
移位操作符<<(左移),>>(右移0)
算术操作符&,^,按位或
逻辑操作符&&,!,逻辑或
关系操作符==,<=,>=,!=
单目操作符!,++,- -,~
双目操作符+,-,*,/,%
条件操作符exp1?exp2:exp3
赋值操作符=,+=,-=,*=,/=,%=,
逗号表达式exp1,exp2,exp3…expn(逗号表达式的最终结果是逗号右边表达式的结果)
函数调用()
下标操作符[]
结构成员->

exp1?exp2:exp3:判断表达式1是否正确,如果正确,那么表达式2就是最终答案,如果表达式1不正确,那么表达式3就是最终答案。
1、&:有一个0,结果就是0,两个1结果才是1
01101100
&
11101011
得到01101000
2、|:有一个1,结果就是1,两个0结果才是
01101100
|
11101011
得到11101111
3、^:(按位异或)相同为0,相异为1
01101100
^
11101011
得到10000111

十一、常见关键字

在这里插入图片描述
unsigned:可将一个数定义为无符号数,signed则是有符号数

十二、指针

指针是一个用来指示一个内存地址的计算机语言的变量或者中央处理器中的寄存器。
每一台电脑内存都是有限的,为了有效使用内存,把内存划分为许许多多个小的单元格,每一个单元格存放1个字节,为了能快速找到每个单元格,就将这些单元格进行编号,这些编号就叫做单元格地址。
与指针有关的两个操作符是解引用操作符(*)和取地址操作符(&)。
例如

int a = 10;
int* p = & a;
*p = 20;
里面p是指针,*是解引用操作符,*p被赋值为20就表示a的值被改为了20

另外,指针在32位平台上是4个字节大小,在64位平台上是8个字节大小。

十三、结构体

struct tea  
{
	char name[20];(名字是字符串类型)
	char sex[5];(性别也是字符串类型)
	int  age;(年龄是整形)
}

struct是结构体关键字,不能少
初始化结构体时,要在一个大括号内初始化完成:

tea yw = { "李明","男",18 };

当访问结构体内的成员时,可用yw(要与前面名称一致).(这个点是一个操作符)name,也就是ym.name
如果运用了结构体指针,struct tea* p = &ym
那么可以用p->name,来访问结构体成员。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值