重生之我是C语言

1. C语言的注释

多行注释:一种是以/*开始、以*/结束的块注释;

/*
这是
注释
*/

单行注释:一种是以//开始、以换行符结束的单行注释

//这是注释

2. C语言数据类型和关键字

基本数据类型

C语言的基本数据类型为:整型、字符型、实数型。这些类型按其在计算机中的存储方式可被分为两个系列,即整数(integer)类型和浮点数(floating-point)类型。

这三种类型之下分别是:short、int、long、char、float、double这六个关键字再加上两个符号说明符signed和unsigned就基本表示了C语言的最常用的数据类型。

下面列出了在32位操作系统下常见编译器下的数据类型大小及表示的数据范围:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a = 2, b = 1;//定义两个变量a,b并赋值
	int c;//定义变量c用于计算a+b的和
	c = a + b;
	printf("a+b = %d",c);//输出结果a+b=3
	return 0;
}

C语言关键字

在C语言中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字,我们用户自己定义的变量函数名等要注意不可以与关键字同名。

void关键字:空类型的关键字,void关键字不能定义变量,void用来修饰函数的参数或返回值,代表函数没有参数或没有返回值。

sizeof关键字:使用来测变量、数组的占用存储空间的大小(字节数)。

typedef关键字 :重命名相关的关键字。在C语言中,除系统定义的标准类型和用户自定义的结构体、共用体等类型之外,还可以使用类型说明语句typedef定义新的类型来代替已有的类型。typedef语句的一般形式是:

typedef 已定义的类型 新的类型;

typedef int INTEGER; /*指定用 INTEGER 代表 int 类型*/
typedef float REAL; /*指定用 REAL 代表 float 类型*/

在具有上述typedef语句的程序中,下列语句就是等价的:

int i, j; /*与 INTEGER i,j;*/
float pi; /*与 REAL pi;*/



当然typedef的最常用的作用就是给结构体变量重命名。

#include<stdio.h>
#include<string.h>
typedef struct _INFO
{
    int num;
    char str[256];
}INFO;
int main()
{
    struct _INFO A;
    INFO B; //通过typedef重命名后的名字INFO与struct _INFO完全等价!
    A.num = 2014;
    strcpy(A.str,"Welcome to dotcpp.com");
    B=A;
    printf("This year is %d %s\n",A.num,A.str);
    printf("This year is %d %s\n",B.num,B.str);
    return 0;
}

可以看到typedef可以为关键词改名,使改名之后的INFO类型等价于struct _INFO类型,让我们在定义这种结构类型时更方便、省事。

3. 存储相关的关键字

register、static、const、auto、extern

register 是 寄存器的意思,用register修饰的变量是寄存器变量。即:在编译的时候告诉编译器这个变量是寄存器变量,尽量将其存储空间分配在寄存器中。

注意:

(1):定义的变量不一定真的存放在寄存器中。

(2):cpu 取数据的时候去寄存器中拿数据比去内存中拿数据要快

(3):因为寄存器比较宝贵,所以不能定义寄存器数组

(4):register 只能修饰 字符型及整型的,不能修饰浮点型

 register char ch;
 register short int b;
 register int c;
 register float d;//错误的



(5):因为register 修饰的变量可能存放在寄存器中不存放在内存中,所以不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址。

 register int a;
 int *p;
 p=&a;//错误的,a可能没有地址

static 是静态的意思,static 可以修饰全局变量、局部变量、函数。

const 是常量的意思,用const 修饰的变量是只读的,不能修改它的值。const 可以修饰指针。

const int a=101;//在定义 a 的时候用const 修饰,并赋初值为101

从此以后,就不能再给a赋值了。

extern 是外部的意思,一般用于函数和全局变量的声明。

4. if选择结构

if else选择程序结构用于判断给定的条件,根据判断条件的成立与否来控制程序的流程。选择结构有单选择、双选择和多选择3种形式,单选择结构用if语句实现。

形式一:

if(表达式) /*若条件成立则实行花括号里的语句,反之则不执行*/ 
{ 
    //语句 
}

形式二:


if(表达式) /*若表达式成立则执行语句1,否则执行语句2*/ 
{ 
    //语句1 
} 
else 
{ 
    //语句2 
}

形式三:

if(表达式) /*如果表达式成立,执行语句1否则继续判断表达式2*/ 
{ 
    //语句1 
} 
else if(表达式2) /*如果表达式成立,执行语句2否则继续判断表达式3*/ 
{ 
    //语句2 
} 
else if(表达式3) /*如果表达式成立,则执行语句3否则继续判断下一个表达式*/ 
{ 
    //语句3; 
} 
//… … 
else /*如果以上表达式都不成立 则执行语句4*/ 
{ 
    //语句4 
}

5. switch case语句

对于有三种或更多的结构,C语言除了用多分支选择结构else if之外,C语言还提供了switch的结构。

switch语句的执行过程为:首先计算表达式的值,然后依次与常量表达式依次进行比较,若表达式的值与某常量表达式相等,则从该常量表达式处开始执行,直到switch语句结束。若所有的常量表达式的值均不等于表达式的值,则从default处开始执行。一般形式如下:

switch(表达式) /*首先计算表达式的值*/ 
{ 
    case 常量表达式1:语句1; 
    case 常量表达式2:语句2; 
    case 常量表达式3:语句3; 
    // …… 
    case 常量表达式n:语句n; 
    default:语句n+1;
}

6. break语句的用法

break,顾名思义,跳出的意思,仅用于跳出switch结构或循环结构,用于提前结束switch结构或循环。

如switch结构中,我们知道switch结构会判断从哪个case开始执行,然后接着后面所有的case后面的语句都执行完,但通常情况下我们希望仅执行一个case后面的语句,不希望输出多余的信息,因此这个时候就可以使用break语句跳出结束switch结构,如以下程序:

#include<stdio.h>
int main()
{
    int value;
    scanf("%d",&value);
    switch(value)
    {
        case 1:printf("one");break;
        case 2:printf("two");break;
        case 3:printf("three");break;
        default:printf("other");break;
    }
    return 0;
}

7. while循环语句

while语句创建一个循环,该循环在判断表达式为假(或0)之前重复执行。while语句是一个入口条件(entry-condition)循环,在进行一次循环之前决定是否要执行循环。因此有可能一次也不执行。循环的语句部分可以是一个简单语句或一个复合语句。

while(表达式) 
{ 
    循环体语句 
}

do while语句创建一个循环,它在判断表达式为假(或0)之前重复执行。do while语句是一个退出条件循环,在执行一次循环之后才决定是否要再次执行循环,因此循环至少要被执行一次。循环的语句部分可以是一个简单语句或一个复合语句。

do 
{ 
    循环体语句 
}while(表达式);

嵌入式软件工程师面试完全指南

面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,2800+订阅,非常适合在找工作面经薄弱的同学,3200+订阅还会涨价,提前订阅提前享受,持续更新中。

原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论

相关推荐

昨天 12:24
武汉工程大学 C++
点赞 评论 收藏
分享
虽然早就被通知没有转正名额了,那是因为房子退租问题什么的,一直忍耐下来了,答应他作为日常实习留下来了,现在终于解放了,来之前给我信誓旦旦的保证说实习转正不会养鱼的,结果来了之后,就安排我轮岗,我轮岗了一个月一点本职工作没有结果,考核的时候是考核我本职工作的,要不是因为我之前有过一段实习,我估计考核的成品都拿不出来。然后挂我的理由就是人太多了,没那么多转正名额可以给到。如果说我是因为能力问题,然后别人不好直说。但是有好几个人都是暑假在这边实习,然后要结束的时候,他主动找人家,给人家说留下来,后面会秋招给人转正的,但这次依然用的是没有转正名额这个理由把你辞退了。我也不是说故意黑他怎么样,你就拿正式员工和实习生的人数占比,你来判定吧,实习生的占比要在一半以上,你说一家实习生占比比正式员工还多的公司能有多好呢?真的就是纯白嫖实习生劳动,我所在的是网校图书,在我离职的时候,我们组一共26个人,15个实习生。然后入职签的也不是实习,签的是劳务合同,一天就140,交完税到手只有110。。然后入职之后也是没有人带你的,他们所谓带你那个人是给你安排任务的,但是很大概率你们的岗位并不相同,只是说工作对接而已。所以说只能把任务给你说的详细一点。至于说你在操作过程中遇到的问题,有很多时候和你对接那个人,他也不是说怎么了解去做的。只能说你自己去想办法解决,至于说那为什么不找别的同事去问呢?我也前面说过,实习生的占比是很大的,而且他把实习生和正式员工工位是分开,所以说很多问题没办法得到一个及时的反馈,只能靠自己&nbsp;&nbsp;&nbsp;#
荷包蛋a:当时秋招听他说要实习在转正就感觉不是啥好人
好未来成长空间 68人发布
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务