c语言关键字

C语言程序结构之分支结构if switch

笑着哭i 提交于 2020-02-26 12:30:46
一,程序的结构:顺序结构 :程序运行时按正常的流程运行 (程序内部运行实现线性结构:栈,队 列,链表,数组个人感觉) 分支结构 : 条件语句 if switch 循环结构 : while do while for 二,if语句 1,分类1)第一种形式: 构成:if(表达式){ 语句块; } 2)if....else的形式 用法:如果表达式的值为真(1) 执行语句块1 如果表达式的值为假(0) 执行语句块2 格式:if(表达式) { //如果表达式的值为真(1),会这行此代码块 语句块1; } else { //如果表达式值为假(0),会执行else大括号中的内容 语句块2; } 3)if...else 的嵌套使用 if(条件1){ 语句块1; if(条件2){ //条件1为真 } }else{ } 4)if ...else if...else if(条件1){ 语句块1 }else if(条件2) { }else if(条件3){ } else{ } 2,注意点:以后if语句不管后面是否为空语句还是一句都加{} (防止出错) 1)if(); if语句后面可以直接写一个“;”(“;”空语句),表示什么都不干 2) 当if语句为真的时候只需执行一句话的时候,是可以省略括号的 3)if(1)或者if(-1) 都是永真式,if(0) 永假式 4)作用域紊乱的问题 if(a>0) int

《C语言》 —— 数组详解

久未见 提交于 2020-02-26 03:05:41
书籍使我变成了一个幸福的人,使我的生活变成轻松而舒适的诗。——高尔基 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 前言  我本来准备C语言章节就写个指针就ok了,在我看来C语言的精华部分就是指针了。但是有很多同学就开始在群里各种拉扯C语言的其他问题,没办法,我是龙叔嘛,想想还是整理一下,把一些重要的C语言知识点都一一更新了吧。C语言指针的内容请点击 指针(上) 和 指针(下) , 记得点关注,不迷路 数组的基本概念  我们把一组数据的集合称为 数组(Array) ,它所包含的每一个数据叫做 数组元素 (Element),所包含的数据的个数称为 数组长度 (Length),数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为 下标 (Index),所包含数组的里面元素的类型叫做 数组类型 (Type)。  一句话就说清楚了数组的基本概念,就是这么简单,^_^。 数组底层结构探析 int array[5]; 内存布局图  不要看这个图简单,底层就是这样的。数组是一个整体,它的内存是 连续 的;也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙。   这一点很重要,连续的内存为 指针 操作(通过指针来访问数组元素)和内存处理(整块内存的复制、写入等

C++编译过的C代码为什么要用extern C

。_饼干妹妹 提交于 2020-02-25 23:35:35
首先extern关键字: extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。相反,static关键字则是只能在本模块中使用。 通常,在模块的 头文件 中对本模块 提供给其它模块引用的函数和全局变量 以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数 extern "C": extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的, extern "C"必须出现在函数的第一次声明上。 作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为: void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。_foo_int

extern \"C\" 用法解析

老子叫甜甜 提交于 2020-02-25 23:34:19
extern "c"用法解析 作者 作者Jason Ding ,链接 http://www.jianshu.com/p/5d2eeeb93590 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的函数名。 揭秘extern "C" 从标准头文件说起 #ifndef __INCvxWorksh /*防止该头文件被重复引用*/ #define __INCvxWorksh #ifdef __cplusplus //__cplusplus是cpp中自定义的一个宏 extern "C" { //告诉编译器

C语言要点总结-关键字总结

别来无恙 提交于 2020-02-25 16:11:57
目录 6关键字总结: 6.1define(宏定义) 6.2const(恒定) 6.3 sizeof 6.4static(静态) 6.4.1static修饰局部变量 6.4.2static修饰全局变量 6.4.3static修饰函数 6.4.4在C++等面对对象编程语言中 6.5 auto(自动变量) 6.6 4个与储存类型相关的关键字总结 6.6.1.auto 6.6.2.extern 6.6.3.register 6.6.4. static 6.7 typedef 6关键字总结: 32个关键字 数据类型 关键字(12个) char,short,int,long,float,double, unsigned,signed,struct(结构体),union(共用体),enum(枚举),void 控制语句 关键字(12个) if,else,switch,case,default,for,do,while,break,continue,goto,return 存储类 关键字(5个) auto(自动变量),extern(外部类型变量),register (寄存器类型变量) , static(静态类型变量 ) , const 其他 关键字(3个) sizeof , typedef ,volatile 6.1define(宏定义) #define NUM 100 预处理部分

C语言switch case语句详解

自闭症网瘾萝莉.ら 提交于 2020-02-22 12:21:03
当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用switch case语句解决,针对分支的复杂性选择合适的程序解决。 当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示: #include < stdio . h > int main ( ) { int a ; printf ( "Input integer number:" ) ; scanf ( "%d" , & a ) ; if ( a == 1 ) { printf ( "Monday\n" ) ; } else if ( a == 2 ) { printf ( "Tuesday\n" ) ; } else if ( a == 3 ) { printf ( "Wednesday\n" ) ; } else if ( a == 4 ) { printf ( "Thursday\n" ) ; } else if ( a == 5 ) { printf ( "Friday\n" ) ; } else if ( a == 6 ) { printf ( "Saturday\n" ) ; } else if ( a == 7 ) { printf ( "Sunday\n" ) ; } else {

C语言中关键字static的用法

女生的网名这么多〃 提交于 2020-02-17 01:53:10
在C语言中,static可以修饰变量(局部变量和全局变量)和函数 1.static修饰局部变量 作用:改变了局部变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束 代码1: #include<stdio.h> void test() { int i = 0; i++; printf("%d ", i);//1 1 1 1 1 1 1 1 1 1 } int main() { int i = 0; for (i = 0; i < 10; i++) { test(); } return 0; } 代码2: #include<stdio.h> void test() { static int i = 0; i++; printf("%d ", i);//1 2 3 4 5 6 7 8 9 10 } int main() { int i = 0; for (i = 0; i < 10; i++) { test(); } return 0; } 2.static修饰全局变量 作用:改变了全局变量的作用域 使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用 代码1: //sum.c int g_val = 2019; //test.c extern int g_val; int main() { printf("%d\n", g_val);//----

C语言------结构体和共同体

给你一囗甜甜゛ 提交于 2020-02-11 01:07:37
1.结构体是一种构造类型,它是由若干成员组成的,其中每个成员可以是一个基本数据类型或者是一个构造类型。声明结构体时使用关键字struct。 2..声明一个结构体表示的是创建一个新的类型名,要用新的类名再定义变量,定义方式有三种:   A.声明结构体,然后再定义变量。     struct Product     {成员列表};     struct Product product1;     struct Product product2;   B.在声明结构类型时,同时定义变量。     struct Product     {       char cName[10];       char cShape[20];     }product1, product2;     PS:注意变量的名称要放在最后的分号前面;定义的变量不是只能有一个,可以定义多个变量    C.直接定义结构体类型变量。     struct     {       成员列表     }变量名列表; 3.在引用结构体的成员时,可以在结构的变量名的后面加上成员运算符"."和成员的名字,例如:product1.cName 4结构体类型与其他基本类型一样,可以在定义结构体变量时指定初始值。例如:   struct Student   {     char cName[20];     char cSex;    

C语言-结构体struct-联合体union-枚举enum

耗尽温柔 提交于 2020-02-10 18:53:35
结构体 在Java中,我们要表示一个复合的数据类型就会使用对象去封装。而C就有结构体。 结构体是C语言中自定义的数据类型,是一组变量的集合,有别于数组,数组仅限于同一种数据类型,而结构体可以是任何数据类型,包括数组。结构体里面的每一个变量或者数组都是结构体的成员。 下面来看看结构体的基本使用 14-18行,定义了一个名称为Person的结构体,结构体里面有 age,money,sex 三种数据类型; 20-24行,是结构体的声明一个名为 P 的 Person 变量,并赋值; 25-27行,是结构体的基本使用,从中可以看出的是,结构体取值的时候和Java中极为相似,都是中间 . 的形式进行取其中某个变量的值。 下面来看一下 结构体指针的使用。 29-30行,定义了一个结构体指针,名为 pi,并将结构体变量 p 的地址赋值给 pi 。 32行,结构体指针的使用,既然 pi 是结构体 p 的指针,那么,取结构体那就是前面加个 * 咯,就这么简单,照葫芦画瓢嘛,现在取到了结构体 p,那么去 p 里面的就简单了,直接使用前面的方式中间加个 . 即可; 33行,则是指针结构体的另一种使用方式,直接使用 -> 就可以取里面相应的值了,比32行的方式是不是假单很多呢? 结构体的长度 结构体和结构体指针都说完了,最后来看一下结构体的长度。 长度简单嘛,直接把里面的累加不就得了,int 和 float

浅析C语言auto关键字和C++ 中的auto关键字

筅森魡賤 提交于 2020-02-07 15:48:33
写在前面 本文转载自 浅析C语言auto关键字和C++ 中的auto关键字 https://blog.csdn.net/LiuBo_01/article/details/80752734 以下是原博客正文 最近在读《C++ Prime》,不禁想感叹一句:C++真是一种美丽的语言!!!!!!! C++提供了相比于 C语言更加丰富的库函数,功也更加强大。举个例子吧。 题目:编写一段程序,读入一段包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分。 源代码: //编写一个程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分 # include <iostream> # include <string> using namespace std ; int main ( ) { /*src为源字符串即要操作的字符串,dest为目标字符串,存放操作结果*/ string src , dest ; getline ( cin , src ) ; /*从输入中读取一行赋值给str1*/ for ( auto c : src ) /*对str中的每个字符*/ { if ( ! ispunct ( c ) ) /*如果该字符不是标点符号*/ { dest . push_back ( c ) ; /*把该字符尾插到dest中*/ } } cout << dest <<