如题,在下是一名大二学生,希望改过自新,重新学习C语言(同时也在学习数据结构,希望各位大佬多多指教)
C语言最初作为Unix系统的开发工具而发明的。如今成为一种高级语言,可谓C生万物
C语言代码是放在.c为后缀的文件里,.c为后缀的文件称为源文件,.c本身就是文本文件,无法直接运行,所以要得到最终运行的可执行程序,中间要经过编译和链接两个过程。
打开VS时需要新建项目,新建项目选择空项目,然后可以给项目取一个名称,再选择一个文件路径来保存这个项目
以xxx.h为代表,主要用于函数声明
以xxx.c为代表,用于编写代码与实现函数
#include<stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
运行结果:
注意不要写成mian哦 1.main函数是程序的入口 2.main函数有且只有一个 3.一个项目里不管有多少.c文件,但是main函数只能有一个(main函数是程序的入口)
printf是一个库函数,对应的头文件是#include<stdio.h>,它的功能是在标准输出设备(一般指屏幕)上进行信息打印。上面使用printf函数打印了一串字符串。只要想打印一串字符就将它放进双引号内并传递给printf函数,printf函数可以将这串字符串打印到屏幕上
这个头文件的#include是预处理,是用来包含头文件的。这个"<>"括号里的的stdio.h是一个,头文件名,.h后缀代表头文件,stdio是英文 (standard(标准) input(输入) output(输出)) 的缩写,全名“standard input output(标准输入输出)”,所以每个被调用的标准输入输出函数都会通过该头文件里对应的函数声明到库文件(标准库)中找到函数的定义并使用。#include<stdio.h>里的“<>“表示是标准库里的头文件。#include“stdio.h”表示个人创建的头文件,如果调用一个函数会先到个人创建的头文件里找函数声明,如果未找到,便会自己到标准库里去找。
ASCII里的字符都是以0--127的十进制的数字表示,也叫编号。以编号的二进制存入内存中叫做编码,共128个字符。
只需注意一些特殊的ASCII码 1.字符A-Z的ASCII码值范围65-90 2.字符a-z的ASCII码值范围97-122 3.对应的大小写字母(a和A)的ASCII码值的差值是32 4.数字字符0-9的ASCII码值范围48-57 5.换行 '\n' 的ASCII码值是:10
'1'为字符,“123”是字符串
字符串可以理解为多种字符串成了一串,就叫字符串。
'\0'的介绍(很重要!)
' \0 '是字符串的结束标志。 每个字符串的内容不止表面的几个字符,例如 "hello",它实际上存储了6个字符,为什么? 这是因为每创建一个的字符串结尾都有一个结束标志 ' \0 ',因为程序在内存中读取字符串时,是从前往后一个一个读取的,所以最后需要额外存储一个结束标志
举例如下:
#include <stdio.h>
int main()
{
char str1[] = "hello"; //创建字符数组
char str2[] = {'h','e','l','l','o'};
printf("%s\n",str1);
printf("%s\n",str2);
return 0;
}
str1 打印结果为hello; str2 打印结果为hello烫烫烫烫;烫为乱码 因为字符串自带\0作为终止符,而str2无终止符,打印完hello后会打印乱码
转义字符顾名思义就是转变意义的符号,比如我有一个数字字符' 0 ',但是当我给这个字符前面加上右斜杠' \ '后,就是' \0 ',意思就从字符' 0 ' 转变为' \0 '字符串结束标志,这种就叫做转义字符。
例:'n'未转意前打印出来就是字符n,若变为'\n'则变为换行
转义字符列表
\?:在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上无法验证 三字母词就是??)--转换-->],??(--转换-->[ \':用于表示字符常量' \":用于表示字符串内部的双引号 \\:用于表示反斜杠,防止字符被解释为转义字符 \a:警报(蜂鸣) \b:退格键,光标回退一个字符,但不删除字符 \f:换页符,光标移到下一页,在现代系统上,这已经反应不出来了,行为改成类似于\v \n:换行符 \r:回车符,光标移到同一行的开头 \t:制表符,光标移到下一个水平制表位,通常是下一个8的倍数 \v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列。 下面两种转义可以理解为:字符的8进制或16进制的形式 \ddd:ddd表示1—3个八进制的数字。 如:\130 表示字符X \xdd:dd表示2个十六禁止的数字。 如:\x30 表示字符0