C语言基础知识问答

1、什么是C语言?
答:C语言是一门通用的高级计算机编程语言 。(由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计开发出来的)

2、C语言有什么特点?
答:

1、C语言是一个有结构化程序设计,具有变量作用域以及递归功能的过程式语言。
2、传递参数就是以值传递,也可以传递指针。
3、不同的变数类型可以用结构体组合在一起。
4、部分变量类型可以转换,例如整形和字符型变量。

3、什么是常量?
答: 答:计算机中有时需要描述一些不发生变化的值(圆周率,身份证号等),这就需要一个不变的量来描述,这种值就叫做常量。

4、什么是变量?
答:计算机有时需要描述一个变化的值,这时就需要一个变化的量来表示,我们将此称为变量

5、C语言中有哪些常量?
答:

1、字面常量(1 、 3.14 、’a’ 、 ‘\n’)
2、const定义的常量。C语言中,const修饰一个标识符的时候,这个标识符依旧是一个变量,但是它具有常属性,不能被直接改变。
3、#define定义的标识符常量。(#define MAX_SIZE 100)
4、枚举常量。枚举关键字为enum
enum sex { male, female, secret }
//这里的male female secret都是枚举常量

6、const关键字是干什么的?
答:const是一个常量关键字,意味着”只读”。主要是为了防止所修饰对象被修改。

Const只是一个修饰符,不管怎么样a仍然是一个int型的变量
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效。前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,指向的整型数是不可修改的,但指针可以,此最常见于函数的参数,当你只引用传进来指针所指向的值时应该加上const修饰符,程序中修改编译就不通过,可以减少程序的bug)。
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

7、static关键字是干什么的?
答:提到static先来说一说链接属性的问题。函数在使用的时候可能在不同的源文件中,每个源文件单独编译完成以后生成对应的目标文件,所有的目标文件以及那些从一个或者多个函数库中引用的函数,链接在一起形成了可执行程序。标识符的链接属性就决定了如何处理形同的几个标识符出现在几个不同的源文件中。链接属性分为外部链接属性,内部链接属性,和无链接属性。而static关键字的作用就是在声明中修改标识符的链接属性,将一个链接属性为外部链接属性的标识符修改为内部链接属性。需要注意的是static支队缺省链接属性为外部链接属性的声明才有改变链接属性的效果

8、register关键字是干什么的?
答: 使用register 关键字修饰的局部变量是一个寄存器变量,它请求编译器尽可能的将变量存在寄存器中,这样使得CPU省去了从内存中获取数据的时间,从而提高程序的运行效率。需要注意的是register修饰的局部变量名。不可以对其取地址,比如register int num = 5,不能&num 。因为&是从内存中取。而num在寄存器中。对于全局变量和函数则不可以使用register修饰。

9、volatile关键字是干什么的?
答:保证内存的可见性。用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,保证了每次读写变量都从主内存中读,跳过CPU cache这一步。当一个线程修改了这个变量的值,新值对于其他线程是立即得知的。

10、unsigned和signed是干什么的?
答: int是 4字节 32位 但是有效位为31 第1位为符号位 。unsigned int 的有效位为32 但是不能表示负数的。
表示的范围不同:
比如 char 的范围是 -128 - 127
那么 unsigned char的范围就是 0-256

11、什么是字符和字符串?
答:字符串:用一对双引号引起来的一串字符;字符:计算机中使用的字母、数字、字和符号。

12、ASCII编码是什么?
答: ASCII(American Standard Code for Information Interchange,美国信息交换标准代码),是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统

13、转义字符?
答:先说一说三字母词。

几个字符的序列和起来表示另外的一个字符

三字母词 表示字符
??( [
??) [
??< {
??> }

现在我们如果想要输出(are you ok??),其实根本达不到我们想要的结果,输出的是:(are you ok[,由于三字母词的引入,将我们字符串的最后的??)转换成了一个[ 。这时就出现了转义字符。
转义字符就是当某些字符组合以后,就不会单纯的被看做一个一个的字符,这些字符的组合会被看做一个整体解释为另外一种意思。由此一来我们在会因为三字母词的原因而改变字符串的地方加上转义字符就会防止他们被解析成三字母词。

转义字符 释义
\? 在书写多个问号时使用,防止被解析为三字母词
\’ 用于表示字符常量’
\” 用于表示一个字符串内部的双引号
双斜杠 用于表示一个反斜杠“\”,防止他被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\n 换行
\r 回车
\f 换页符
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制数字如:\130 X
\xddd ddd表示3个十六进制数字如:\x030

注意“\”与“/”的区别使用。

你可能感兴趣的:(总结,c语言,C语言基础学习)