c语言需要背的知识点(c语言你必须知道的知识点)

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持,下面我们就来说一说关于c语言需要背的知识点?我们一起去了解并探讨一下这个问题吧!

c语言需要背的知识点(c语言你必须知道的知识点)

c语言需要背的知识点

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持

extern

在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:extern 函数原型; 这样,在源文件B里也可以调用那个函数了

注意这里的用词区别:

在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。

定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。

打一个粗俗的比方:在源文件B里声明后,好比在B里开了一扇窗,让它可以看到A里的那个函数。

Return

return是一个函数结束的标志,一个函数里执行到return语句后,后面的语句就不再执行了,但要注意一点,return语句只是结束了当前函数,如果是在函数嵌套中,那么只是结束一个函数

Static

当一个进程的全局变量被声明为static之后,它的中文名叫静态全局变量。

静态全局变量和其他的全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss段(未初始化)内。但是它只在定义它的源文件内有效,其他源文件无法访问它。

所以,普通全局变量穿上static外衣后,它就变成了新娘,已心有所属,只能被定义它的源文件(新郎)中的变量或函数访问。

static局部变量中文名叫静态局部变量。它与普通的局部变量比起来有如下几个区别:

1)位置:

静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在。

2)访问权限:

静态局部变量只能被其作用域内的变量或函数访问。也就是说虽然它会在程序的整个生命周期中存在,由于它是static的,它不能被其他的函数和源文件访问。

3)值:

静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,以后每次调用静态局部变量的时候都用上次调用后的值。这个比较好理解,每次函数调用静态局部变量的时候都修改它然后离开,下次读的时候从全局存储区读出的静态局部变量就是上次修改后的值。

C语言字符数组里,怎么区分0和'\0'呢?

#include<stdio.h> #include<string.h> intmain(){ chara[5]={1,2,0,3,5};//这里面是整型数 inti=0; while(a[i]!='\0') { printf("%c\n",a[i]); i ; } return0; }

这样的话遇到数字0就结束了

C语言字符数组里,0和'\0'是一样的,因为他们的ACSII码都是 0.当你打印的时候看你以什么形式去打印,如果是 %d,那会打印出0 如果是%c打印出 ‘\0’,本质上其实是一样的,一个是assic 一个是该assic码对应的字符

'\0'就表示将字符'0'转义,从而表示ascll码为0的字符(结束符),而数值0和这个是一个意思,字符'0'的ascll码就不是0了,它表示那个数字字符'0'

不同编译器上,int有几个字节

一)64位系统和32位有什么区别?

1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存

2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。

什么是64位处理器?

之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。

一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理器先天就比32位处理器具有快速的能力。

那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片。

64位处理器之失

※硬件———缺乏驱动程序,很多现有硬件无法使用

※软件———操作系统不是问题,但是软件出现不兼容难题

64位处理器之得

※硬件———更快的执行速度,更大的内存管理

※软件———最新的尖端软件首先出现在64位平台

二)数据类型对应字节数不同的平台上对不同数据类型分配的字节数是不同的。 理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。

常用数据类型对应字节数可用如sizeof(char),sizeof(char*)等得出

32位编译器:

char :1个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 4个字节long long: 8个字节unsigned long: 4个字节

64位编译器:

char :1个字节char*(即指针变量): 8个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 8个字节long long: 8个字节unsigned long: 8个字节

switch… case 语句的用法

switch(表达式){ case 常量表达式1:语句1;....case 常量表达式2:语句2;default:语句; }

1.default就是如果没有符合的case就执行它,default并不是必须的.

2.case后的语句可以不用大括号. case 后面必须是常量表达式constant expressions, 错误表示如: case x .

3.switch语句的判断条件可以接受int,byte,char,short, enum不能接受其他类型.

4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.

数据段:用来存放程序中初始化的全局变量的一块内存区域。包括可变的数据段和不可变的数据段 。const的全 局变量存储于只读的数段 :静态内存分配

代码段 :通常用来存放执行代码的一块内存区域。只读

堆 :用于存放进程运行中被动态分配的内存段,它的大小并且不固定,可动态扩展。当进程调用malloc等分配内存时,新分配的内存被动态地添加到堆上(堆被扩大),当利用free等函数释放内存时,被释放的‘ 内存从堆中剔除

栈:栈在进程运行时产生,一个进程有一个进程栈。栈用来存储程序临时存放的局部变量,即函数{}内定义的变量 不包括static 类型的。函数被调用时,他的形参也会被压栈。------------将栈看作一个寄存器交换临时数据的内存区

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页