1、指针是变量,表现为什么?
(1)系统为指针分配内存空间;
(2)指针有自己的地址;
(3)指针能够存值,但这个值比较特殊——地址。
2、指针的类型和指针所指向的类型有什么区别?
从语法的角度看,只要把指针声明语句里的指针名字去掉,剩下的部分就是指针的类型,这是指针本身具有的类型。
从语法上看,只需把指针声明语句中的指针名字和名字左边的的指针声明符“*”去掉,剩下的就是指针所指向的类型。
3、指针的算术运算有几种形式?进行运算时需要注意什么?
(1)形式1: 指针 +/- 整数
标准定义这种形式只能用于指向数组中某个元素的指针,这类表达式的结果类型也是指针;
(2)形式2: 指针 - 指针
只有当两个指针都指向同一个数组中的元素时,才允许从一个指针减去另一个指针。减法运算的值是两个指针在内存中的距离(以数组元素的长度为单位,而不是以字节为单位)。
4、最多可以使用几层指针包含几种意义?
(1)在说明一个指针时最多可以包含至少12层间接引用;
(2)最多可以使用2层指针而不会使程序难读;
(3)程序运行时最多可以有无限层指针。
5、常量指针和指针常量有什么区别?
常量指针,即指向一个常量的指针,指向的内容是常量,不可修改,放在常量区的,但指针本身可以修改;
指针常量,即指针本身是个常量,不可修改,但指针指向的内容可以修改。
6、指针常量是指指针本身不可变,而内容可以修改。需要注意的是什么?
(1)如果指针常量指向的是字符指针常量,那么当修改*P时,原则上能够修改,在编译时能通过,但在运行时不能通过,因为他试图去修改常量区的内容,显示是非法的;
(2)当指针常量指向一个另外一个指针时,当这个指针指向别的内容时,那么指针常量还是指向原来的内容。
7、空指针有几种用法?
(1)用空指针终止对递归数据结构的间接引用,递归是指一个事物由这个事物本身来定义;
(2)用空指针进行函数调用失败时的返回值;
(3)用空指针作警戒值。
8、sizeof与strlen的区别?
sizeof是C语言中一个单目运算符,而strlen是一个函数,用来计算字符串的长度;
sizeof求的是数据类型所占空间大小,而strlen是求字符串的长度。
9、把函数的地址赋给函数指针,再通过函数指针调用这个函数的步骤是什么?
(1)定义函数指针;
(2)定义函数;
(3)把函数的地址赋给函数指针;
(4)通过函数指针去调用这个函数。
10、怎样用右左法则理解声明?
从变量名开始阅读声明,向右看,然后向左看。当你碰到一个括号时就调转阅读的方向。括号内所有的内容都分析完毕后就跳出括号的范围,直到整个声明都被分析完。