第5章 数组与指针

1、数组的下标总是从0开始吗

是的,对数组a[MAX](MAX是一个编译时可知的值)来说,它的第一个和最后一个元素分别是a[o]和aLMAX-1)。在其它一些语言中,情况可能有所不同,例如在BASIC语言中数组a[MAX]的元素是从a[1]到a[MAX],在Pascal语言中则两种方式都可行。

2、数组作为参数传递给函数时,可以通过sizeof得到数组大小吗

不可以。当把数组作为函数参数时,无法在程序运行是通过数组参数告诉函数该数组本身的大小,因为函数的数组参数相当于指向该数组第一个元素的指针。

3、空指针的使用

(1)用空指针终止对递归数据结构的间接引用,递归是指一个事物由这个事物本身来定义。

(2)用空指针进行函数调用失败时的返回值。

(3)用空指针作警戒值。

4、常量指针和指针常量的区别

常量指针表示指向一个常量的指针,指向的内容是常量,不可修改,放在常量区的,但指针本身可以修改。指针常量是指针本身是个常量,不可修改,但指针指向的内容可以修改。

5、指针数组和数组指针的区别

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。

6、函数指针和指针函数的区别

函数指针:即指向这类函数的指针,定义为“数据类型(*fun)(参数列表);”,()的优先级比*高,所以*fun加括号,如“void(*fun)(int*,int*);”。

指针函数:即返回值是指针的函数,定义为“数据类型*fun(参数列表);”,如“char*fun(int*,int*);”,即返回值为char*型。

7、左右法则的使用

右左法则:首先从最里面的圆括号内未定义的标识符开始阅读看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。

8、指针void的作用

可以用其指代任何类型的指针。但不能用void指针直接进行操作,只能转换成对应类型指针后,才能操作。

9、字符串和数组的不同

字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。

10、野指针的含义

野指针是指向不确定地址的指针变量(即没有初始化)。使用野指针易因内存泄露出现段错误。

猜你喜欢

转载自blog.csdn.net/dada12138/article/details/82960884
今日推荐