首先我们看到第一题的A选项,此处的关键是在使用一个free释放掉一个指针内容后,指针变量的值不会被自动置为NULL。
我们看到下面的图片主要讲解了一些动态内存开辟的相关内容,
图中 malloc 的作用是给某个变量赋予空间
使用变量自行操作
free的作用在上面我们谈到是释放已经被赋予空间的变量,将被赋予的空间清空,使其不会占用过多无用内存。
关键点:free函数在释放完一个指针内容后不会将变量置为NULL。因为p的地址在释放完后依然存在。
第二题的关键就是将字符串放入指针时候,指针中存放的是字符串首元素的地址,即是第一个字符的地址,即h的地址
故该题选C
此题的目的是让我们正确认识到数组指针和指针数组的区别,首先我写一个指针数组给大家看看,比方说int* arr[10],此处方格的优先级是先于*号,所以数组名arr先与[ ]结合形成数组,然后再与int*结合,故其称之为指针数组,即数组名先与[ ]结合就称为指针数组,指针数组的作用是数组中存放的是int*类型的元素,即存放指针。
举个数组指针的例子,比如 int(*arr)[ ],此处因为有括号的影响所以arr先于*结合形成指针,然后再与数组结合,数组指针的作用就是存放数组地址的指针。
故该题选C
此题可参考第三题
答案为C,char*(*arr)[10]为存放char*类型数组的指针。
答案为A
答案为B
答案为D,因为&arr为数组arr一整个数组的地址,若要存放一整个数组的地址应该用数组指针存放,而D中p=&arr则是用一个整数指针存放,故为错误的。
答案为AC
&arr指的是一整个数组arr的地址,而arr指的是数组arr首元素的地址
答案为C
相关解题方法第三题有讲到
第十题
因为str1和str2是不同的数组,所以str1和str2有两种不同的地址
str3和str4指向的都是字符串首字符h的地址,所以str3和str4相同
答案为C
代码如下