指针的一些题目
一、一级指针传参
结果是 1——9
p里面存放 arr数组首元素地址;传参时将地址给了print 函数里的 p
p+1,指向下一个元素 *(p+1)==p[1];
二、二级指针传参
p 是一级指针,里面是n的地址,可以通过解引用操作找到 n;
pp 是二级指针,里面放的是 指针变量p的地址,可以解引用找到 p,再解引用找到n;
因为 pp是二级指针,所以用int** 接收, &p 是取一级指针的地址,肯定也是用二级指针接收。
*pp==p,**pp==*p=n;
三、一维数组传参
数组名表示首元素地址(除了两种情况外);
地址可以用指针接收; 所以 test 都🆗
arr2 这个数组,里面的元素是int*型,接收int*类型元素的地址要用 int**
二级指针接收一级指针变量的地址; 所以test2 都🆗
四、二维数组传参
二维数组的数组名表示 首行地址,所以test接收的应该是一个一维数组的地址
直接用二维数组接收,可以,但是arr[ ][ ],第二个[],必须有值,才能判断整个数组的大小;
数组的地址要用数组指针接收,本质是指针,所以arr要先和*结合,
(*arr)[] 是数组指针,*arr[],本质是数组,里面元素类型是int*
二级指针接收的是一级指针地址,不是数组地址 √ × √ × × √ ×
一些题目
一、
数组名有两种情况表示 整个数组:
1、sizeof(数组名) 【单单只有数组名时成立】
2、&数组名
地址的大小,只跟x86【4】 和x64【8】 有关
二、
三、
四、
五、
倒数第二个 不是 随机值-1,而是随机值
六、
七、
答案是: 2,5
八、
答案:00000004,20000000
九、
-4 ,-4
十、
十一、
结果为: at