第五次作业
笔记
课本例题
存在的问题
1.指针数组可不可以先声明,再初始化?比如,
const char *strings[7] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
把上述写成
const char *strings[7];
strings = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
这样改写是不行的,因为数组名是一个指针常量,也就是第一个元素的地址,它的类型取决于数组数据元素的类型。 我这样赋值相当于修改指针常量,所以报错。如果想对指针数组赋值,需要用一个for或while循环。
2.为什么指针可以指向函数?函数也是占有内存空间的?
函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。