一篇文章带你了解C语言:入门基础更新时间2021年08月03日 16:27:15 作者AKA你的闺蜜这篇文章主要介绍了C语言入门之基础知识详解,文中有非常详细的C语言使用教程及相关基础知识,对正在学习c语言的小伙伴们有非常好的帮助,需要的朋友可以参考下闲话少说先上思维导图。如图所示现在还是初识C语言的第一部分本次只介绍了C语言本身特点数据类型常量变量字符串转义字符注释选择循环语句函数数组。接下来请和我一起粗略地探讨其中内涵所在。C语言本身特点这是C语言的定义C语言是一门通用计算机编程语言广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能但仍然保持着良好跨平台的特性以一个标准规格写出的C语言程序可在许多电脑平台上进行编译甚至包含一些嵌入式处理器单片机或称MCU以及超级电脑等作业平台。二十世纪八十年代为了避免各开发厂商用的C语言语法产生差异由美国国家标准局为C语言制定了一套完整的美国国家标准语法称为ANSI C作为C语言最初的标准。 目前2011年12月8日国际标准化组织ISO和国际电工委员会IEC发布的C11标准是C语言的第三个官方标准也是C语言的最新标准该标准更好的支持了汉字函数名和汉字标识符一定程度上实现了汉字编程。C语言是一门面向过程的计算机编程语言与CJava等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。但总结其特点就是1.底层开发2.国际标准 ANSI C3.面向过程#include //stdio-标准输入输出 standard input output headfile //int -整型-整数的类型 //主函数 //main函数是程序的入口 //唯一性有且仅有一个 int main() { //库函数-打印函数-输出函数 printf(hello world!\n); printf(hello world!\n); printf(hello world!\n); return 0; } //这种写法明确告诉你main函数不需要传参 int main(void) { } //这种写法有用但不是重点 int mian(int argc, char* argv[]) { }数据类型C语言主要有六种数据类型分别为字符型char短整型short整形int长整型long单精度浮点型float以及双精度浮点型double。这六种分别有自己的字符长度即其所建变量所占的空间char最小只要1个字节short占2个int占4个long一般是4个也有可能是8个反正只要满足long的字节长度大于等于int就可以了。两个浮点型的最为特殊分别是4和8显然双精度的精度更高。int main() { //如何计算一个类型创建的变量所占空间的大小 //sizeof(); printf(%d\n, sizeof(char));//1个字节 printf(%d\n, sizeof(short));//2个字节 printf(%d\n, sizeof(int));//4个字节 printf(%d\n, sizeof(long));//4个字节 printf(%d\n, sizeof(long long));//8个字节 printf(%d\n, sizeof(float));//4个字节 printf(%d\n, sizeof(double));//8个字节 return 0; }常量变量变量分类显而易见的是分为两类变量和常量讲述。变量又分两类一是局部变量二是全局变量。顾名思义局部变量是定义在一对大括号内的显然我们平时在main函数里创建的都是局部变量全局变量则为定义在大括号外面的变量。当二者同名时局部变量优先当然这种代码谁写谁SB。使用小建议在程序中使用scanf函数若程序为scanf(%d%d);%d%d之间不管有没有空格输入变量时都要用空格隔开若二者之间有逗号则逗号隔开。生命周期作用域对这二者讨论他们的作用域和生命周期的话全局变量的作用域为整个工程文件若想在其他.c文件中使用则需要extern声明一下生命周期呢则是整个工程的生命周期也就是main函数的生命周期。局部变量的作用域为其定义的大括号{ }内进作用域生命开始出则结束。//验证局部变量的作用域 int main() { int b 100;//主函数任意位置 { int a 10;//局部变量作用域局部所在范围 printf(a%d\n, a); printf(b%d\n, b); } //printf(a%d\n, a); printf(b%d\n, b); return 0; } //验证全局变量的作用域为整个工程 int a 200; void test() { printf(test:%d\n, a); } int main() { test(); printf(main:%d\n, a);//全局变量可以任意使用 return 0; } //全局变量在其他源文件的使用 //转到test1.c文件查看 int g_val 110; //验证局部变量的生命周期为进作用域到出作用域 int main() { { int a 100; printf(%d\n, a); } printf(%d\n, a);//出作用域即生命周期结束 return 0; } //全局变量的生命周期为整个工程即main函数生命周期 int main() { printf(%d\n, g_val); return 0; }常量分类及其特点常量呢大致分为四种1字面常量2const修饰的常变量3#define定义的标识符常量4枚举常量。第一种字面常量就是随便写出来的一个数如3.14就是一个字面常量。第二种const修饰的常变量即在创建变量时加上const修饰如const int a0;这样变量a就具有了常属性不可被修改。但值得注意的是常变量一词它仍然是个变量不可用于定义数组。//const修饰的变量 int main() { //局部变量 int a 200; //不可被改变的属性常属性 const int a 110; a 100; printf(%d\n, a); //const修饰的变量不可定义数组 //常变量 int n 110; int arr[n] { 0 };//数组 return 0; }第三种#define定义的常量写法如 #define N 10这是真真正正的常量可以用来定义数组。同样也是不可修改的常量当然不可被修改。#define PAI 314 int main() { int a PAI; printf(a%d\n, a); //MAX 300;//#define定义的变量不可被修改 //可用于定义数组 int arr[PAI] { 0 }; return 0; }第四种枚举常量具体使用方法像enum sex {MALEFEMALESECRET}这样就得到了枚举常量各自都是有初值的分别为012依次类推当然也可以自己赋值。//枚举常量 SEX性别举例 //可以一一列举的值性别三原色 enum Sex { //枚举的可能取值 MALE3,//赋初值 FEMALE8, SECRET//向后延一个为9 }; int main() { //FEMALE 99;//ERR 枚举变量值不可修改 enum Sex aMALE; enum Sex s FEMALE; printf(%d\n, MALE); printf(%d\n, FEMALE); printf(%d\n, SECRET); return 0; }字符串转义字符注释字符串被单引号引起来的如wr是字符被双引号引起来的yyxabcdef是字符串。字符串一般以\0结尾隐含在字符串的末尾。既然\0为字符串结束标志在计算字符串长度时当然不算作字符串内容。//字符字符串 int main() { //a X - 字符 //abc 123 - 字符串 //abcdef; //字符串字面值 //① char ch1[] abcdef;//初始化字符数组 //a ,b ,c ,d ,e ,f ,\0 //%s - 打印字符串 //strlen - 打印字符串长度遇\0则停止本身不算\0是字符串结束标志 printf(%s\n, ch1); //abcdef printf(%d\n, strlen(ch1));//6 //② char ch2[] { a,b,c,d,e,f }; //a ,b ,c ,e ,f printf(%s\n, ch2); //abcdef烫烫烫烫烫abcdef printf(%d\n, strlen(ch2));//22找不到\0 //③ char ch3[] { a,b,c,d,e,f,\0 }; //a ,b ,c ,d ,e ,f ,\0 printf(%s\n, ch3); //abcdef printf(%d\n, strlen(ch3));//6 return 0; }转义字符有防止单引号双引号反斜杠被转移的 \ , \ \\ 。警告蜂鸣的 \a 退格符 \b 进纸符 \f 换行符 \n 回车符 \r 水平制表符 \t 垂直制表位 \v 八进制数字 \ddd 十六进制数字 \xdd 。#include int main() { printf(c:\code\test.c\n);//c:code est.c printf(c:\\code\test.c\n);//c:\code est.c //单个\是转义序列符但这里又没有\c的转义字符所以系统自动忽略该\ //想要出现该\则必须要搭配两个\\防止其被转义 return 0; } // \? //三字母词 // ??) -- ] ??( -- [ //\ \ int main() { printf(%c\n, a); printf(%c\n, b); printf(%c\n,\);//在前面加上\以单纯的将其视为字符 printf(%s\n, \);// \ return 0; } //\a \b \f \v \t \n \r //\ddd八进制数字 \xdd十六进制数字 int main() { printf(%c\n, \165); //打印八进制数字065转化为十进制数字53所代表的字符ASCII码 printf(%d\n, \165); //打印八进制数字065转化为十进制数字53 printf(%c\n, \x15); printf(%d\n, \x15);//21 return 0; }两种注释C的风格 //xxxxx 这种只能注释一行。C语言的风格 /*xxxxx*/ 不可嵌套注释。选择循环语句选择语句实现分支。具体情况为 if ( 条件 ) { 语句 } else ( 条件 ) { 语句 }循环语句有while循环do...while循环和for循环。int main() { int i 0; printf(加入比特\n); printf(要好好敲代码吗1/0\n); scanf(%d, i); if (i 1) { printf(好offer\n); } else { printf(药丸\n); } return 0; } int main() { int line 0; printf(加入比特\n); while (line20000) { printf(敲%d了代码\n,line); line; } printf(牛逼坏了拿到了好offer\n); return 0; }函数函数主要传参和返回值的类型要对应int ADD(int num1, int num2) { scanf(%d %d, num1, num2); int sum num1 num2; return sum; } int main() { int num1 0; int num2 0; 输入 //scanf(%d %d, num1, num2); 相加 //int sum num1num2; 输出 //printf(sum%d\n, sum); //int output ADD(num1,num2); //printf(%d\n, output); printf(%d\n, ADD(num1, num2)); return 0; }数组定义是一组相同类型的元素组成的集合数组的使用是根据下标来的从0开始数。int main() { //数组 - 相同元素的集合 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; int i 0; for (i 0; i 10; i) { printf(%3d, arr[i]); } printf(\n); for (i 9; i 1; i--) { printf(%3d, arr[i]); } return 0; }总结
一篇文章带你了解C语言:入门基础
一篇文章带你了解C语言:入门基础更新时间2021年08月03日 16:27:15 作者AKA你的闺蜜这篇文章主要介绍了C语言入门之基础知识详解,文中有非常详细的C语言使用教程及相关基础知识,对正在学习c语言的小伙伴们有非常好的帮助,需要的朋友可以参考下闲话少说先上思维导图。如图所示现在还是初识C语言的第一部分本次只介绍了C语言本身特点数据类型常量变量字符串转义字符注释选择循环语句函数数组。接下来请和我一起粗略地探讨其中内涵所在。C语言本身特点这是C语言的定义C语言是一门通用计算机编程语言广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能但仍然保持着良好跨平台的特性以一个标准规格写出的C语言程序可在许多电脑平台上进行编译甚至包含一些嵌入式处理器单片机或称MCU以及超级电脑等作业平台。二十世纪八十年代为了避免各开发厂商用的C语言语法产生差异由美国国家标准局为C语言制定了一套完整的美国国家标准语法称为ANSI C作为C语言最初的标准。 目前2011年12月8日国际标准化组织ISO和国际电工委员会IEC发布的C11标准是C语言的第三个官方标准也是C语言的最新标准该标准更好的支持了汉字函数名和汉字标识符一定程度上实现了汉字编程。C语言是一门面向过程的计算机编程语言与CJava等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。但总结其特点就是1.底层开发2.国际标准 ANSI C3.面向过程#include //stdio-标准输入输出 standard input output headfile //int -整型-整数的类型 //主函数 //main函数是程序的入口 //唯一性有且仅有一个 int main() { //库函数-打印函数-输出函数 printf(hello world!\n); printf(hello world!\n); printf(hello world!\n); return 0; } //这种写法明确告诉你main函数不需要传参 int main(void) { } //这种写法有用但不是重点 int mian(int argc, char* argv[]) { }数据类型C语言主要有六种数据类型分别为字符型char短整型short整形int长整型long单精度浮点型float以及双精度浮点型double。这六种分别有自己的字符长度即其所建变量所占的空间char最小只要1个字节short占2个int占4个long一般是4个也有可能是8个反正只要满足long的字节长度大于等于int就可以了。两个浮点型的最为特殊分别是4和8显然双精度的精度更高。int main() { //如何计算一个类型创建的变量所占空间的大小 //sizeof(); printf(%d\n, sizeof(char));//1个字节 printf(%d\n, sizeof(short));//2个字节 printf(%d\n, sizeof(int));//4个字节 printf(%d\n, sizeof(long));//4个字节 printf(%d\n, sizeof(long long));//8个字节 printf(%d\n, sizeof(float));//4个字节 printf(%d\n, sizeof(double));//8个字节 return 0; }常量变量变量分类显而易见的是分为两类变量和常量讲述。变量又分两类一是局部变量二是全局变量。顾名思义局部变量是定义在一对大括号内的显然我们平时在main函数里创建的都是局部变量全局变量则为定义在大括号外面的变量。当二者同名时局部变量优先当然这种代码谁写谁SB。使用小建议在程序中使用scanf函数若程序为scanf(%d%d);%d%d之间不管有没有空格输入变量时都要用空格隔开若二者之间有逗号则逗号隔开。生命周期作用域对这二者讨论他们的作用域和生命周期的话全局变量的作用域为整个工程文件若想在其他.c文件中使用则需要extern声明一下生命周期呢则是整个工程的生命周期也就是main函数的生命周期。局部变量的作用域为其定义的大括号{ }内进作用域生命开始出则结束。//验证局部变量的作用域 int main() { int b 100;//主函数任意位置 { int a 10;//局部变量作用域局部所在范围 printf(a%d\n, a); printf(b%d\n, b); } //printf(a%d\n, a); printf(b%d\n, b); return 0; } //验证全局变量的作用域为整个工程 int a 200; void test() { printf(test:%d\n, a); } int main() { test(); printf(main:%d\n, a);//全局变量可以任意使用 return 0; } //全局变量在其他源文件的使用 //转到test1.c文件查看 int g_val 110; //验证局部变量的生命周期为进作用域到出作用域 int main() { { int a 100; printf(%d\n, a); } printf(%d\n, a);//出作用域即生命周期结束 return 0; } //全局变量的生命周期为整个工程即main函数生命周期 int main() { printf(%d\n, g_val); return 0; }常量分类及其特点常量呢大致分为四种1字面常量2const修饰的常变量3#define定义的标识符常量4枚举常量。第一种字面常量就是随便写出来的一个数如3.14就是一个字面常量。第二种const修饰的常变量即在创建变量时加上const修饰如const int a0;这样变量a就具有了常属性不可被修改。但值得注意的是常变量一词它仍然是个变量不可用于定义数组。//const修饰的变量 int main() { //局部变量 int a 200; //不可被改变的属性常属性 const int a 110; a 100; printf(%d\n, a); //const修饰的变量不可定义数组 //常变量 int n 110; int arr[n] { 0 };//数组 return 0; }第三种#define定义的常量写法如 #define N 10这是真真正正的常量可以用来定义数组。同样也是不可修改的常量当然不可被修改。#define PAI 314 int main() { int a PAI; printf(a%d\n, a); //MAX 300;//#define定义的变量不可被修改 //可用于定义数组 int arr[PAI] { 0 }; return 0; }第四种枚举常量具体使用方法像enum sex {MALEFEMALESECRET}这样就得到了枚举常量各自都是有初值的分别为012依次类推当然也可以自己赋值。//枚举常量 SEX性别举例 //可以一一列举的值性别三原色 enum Sex { //枚举的可能取值 MALE3,//赋初值 FEMALE8, SECRET//向后延一个为9 }; int main() { //FEMALE 99;//ERR 枚举变量值不可修改 enum Sex aMALE; enum Sex s FEMALE; printf(%d\n, MALE); printf(%d\n, FEMALE); printf(%d\n, SECRET); return 0; }字符串转义字符注释字符串被单引号引起来的如wr是字符被双引号引起来的yyxabcdef是字符串。字符串一般以\0结尾隐含在字符串的末尾。既然\0为字符串结束标志在计算字符串长度时当然不算作字符串内容。//字符字符串 int main() { //a X - 字符 //abc 123 - 字符串 //abcdef; //字符串字面值 //① char ch1[] abcdef;//初始化字符数组 //a ,b ,c ,d ,e ,f ,\0 //%s - 打印字符串 //strlen - 打印字符串长度遇\0则停止本身不算\0是字符串结束标志 printf(%s\n, ch1); //abcdef printf(%d\n, strlen(ch1));//6 //② char ch2[] { a,b,c,d,e,f }; //a ,b ,c ,e ,f printf(%s\n, ch2); //abcdef烫烫烫烫烫abcdef printf(%d\n, strlen(ch2));//22找不到\0 //③ char ch3[] { a,b,c,d,e,f,\0 }; //a ,b ,c ,d ,e ,f ,\0 printf(%s\n, ch3); //abcdef printf(%d\n, strlen(ch3));//6 return 0; }转义字符有防止单引号双引号反斜杠被转移的 \ , \ \\ 。警告蜂鸣的 \a 退格符 \b 进纸符 \f 换行符 \n 回车符 \r 水平制表符 \t 垂直制表位 \v 八进制数字 \ddd 十六进制数字 \xdd 。#include int main() { printf(c:\code\test.c\n);//c:code est.c printf(c:\\code\test.c\n);//c:\code est.c //单个\是转义序列符但这里又没有\c的转义字符所以系统自动忽略该\ //想要出现该\则必须要搭配两个\\防止其被转义 return 0; } // \? //三字母词 // ??) -- ] ??( -- [ //\ \ int main() { printf(%c\n, a); printf(%c\n, b); printf(%c\n,\);//在前面加上\以单纯的将其视为字符 printf(%s\n, \);// \ return 0; } //\a \b \f \v \t \n \r //\ddd八进制数字 \xdd十六进制数字 int main() { printf(%c\n, \165); //打印八进制数字065转化为十进制数字53所代表的字符ASCII码 printf(%d\n, \165); //打印八进制数字065转化为十进制数字53 printf(%c\n, \x15); printf(%d\n, \x15);//21 return 0; }两种注释C的风格 //xxxxx 这种只能注释一行。C语言的风格 /*xxxxx*/ 不可嵌套注释。选择循环语句选择语句实现分支。具体情况为 if ( 条件 ) { 语句 } else ( 条件 ) { 语句 }循环语句有while循环do...while循环和for循环。int main() { int i 0; printf(加入比特\n); printf(要好好敲代码吗1/0\n); scanf(%d, i); if (i 1) { printf(好offer\n); } else { printf(药丸\n); } return 0; } int main() { int line 0; printf(加入比特\n); while (line20000) { printf(敲%d了代码\n,line); line; } printf(牛逼坏了拿到了好offer\n); return 0; }函数函数主要传参和返回值的类型要对应int ADD(int num1, int num2) { scanf(%d %d, num1, num2); int sum num1 num2; return sum; } int main() { int num1 0; int num2 0; 输入 //scanf(%d %d, num1, num2); 相加 //int sum num1num2; 输出 //printf(sum%d\n, sum); //int output ADD(num1,num2); //printf(%d\n, output); printf(%d\n, ADD(num1, num2)); return 0; }数组定义是一组相同类型的元素组成的集合数组的使用是根据下标来的从0开始数。int main() { //数组 - 相同元素的集合 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; int i 0; for (i 0; i 10; i) { printf(%3d, arr[i]); } printf(\n); for (i 9; i 1; i--) { printf(%3d, arr[i]); } return 0; }总结