C++知识总结(3)

来源:互联网 发布:python 聚类算法 编辑:程序博客网 时间:2024/06/07 16:20

11全局变量与静态变量的区别

全局变量与全局静态变量的区别:

 (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。

 (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。

 (c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;

静态全局变量的作用:

a)不必担心其它源文件使用相同变量名,彼此相互独立。

b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。

 (c) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;

 

12局部变量能否和全局变量重名?

能,局部会屏蔽全局。要用全局变量,需要使用"::"

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

 

13获取字符串的方法有哪些?它们的区别?

scanf 标准字符串 遇到’\0’停止不识别空格

gets  获取字符串 可以获取空格

fgets 从文件中获取

C++里:

1)、cin>>

>>操作符的重载,有很多种原型,能够从输入流抽取各种形式的输入(int、单个字符、字符串等),也是我们最常用的一种读取字符的方式。它需要配合输入流对象使用(cin就是iostream类中的istream类对象静态成员),并且返回值是输入流的引用,所以能够有cin>>a>>b这样的写法。

(2) istream:: getline

用于从输入流读取指定长度的字符串到s所指向的字符变量中

 

14使用指针有哪些好处?

指针的使用比较灵活

1.在数据传递时,如果数据块较大(比如说数据缓冲区或比较大的结构),这时就可以使用指针传递地址而不是实际数据,即提高传输速度,又节省大量内存。

2.数据转换,利用指针的灵活的类型转换,可以用来做数据类型转换,比较常用于通讯缓冲区的填充,比如说,一个数据缓冲区char buf[100],如果其中buf[0,1]为命令号,buf[2,3]为类型,buf[4~7]为某一数值,类型为int,就可以使用如下语句进行赋值:

*(short*)&buf[0]=cmdID;

*(short*)&buf[2]=type;

*(int*)&buf[4]=value;

3.字符串指针,是使用最方便,且常用的。

4.函数指针,形如:#define PMYFUN (void*)(int,int),可以用在大量分支处理的实例当中,如某通讯根据不同的命令号执行不同类型的命令,则可以建立一个函数指针数组,进行散转。

5.在数据结构中,链表、树、图等大量的应用都离不开指针。

 

15数组与指针的区别

空间分配:数组静态分配的,指针是动态分配

                    数组分配的空间是连续的,指针分配的空间不一定连续

访问效率数组直接访问,访问效率高,指针间接访问访问效率低

安全性:数组会造成数组越界,指针会造成内存泄漏

函数形参:数组作为函数参数会被退化为指针

操作:数组偏向于值处理,指针偏向于地址的处理

 

声明后:*array合法,对指针取值不合法,将访问未知内存

                 array++不合法,数组名是指针常量,指针自加一个步长合法

原创粉丝点击