数组传参,传的指针为什么在子函数中直接调用

img

数组传参传的不是首地址吗?为什么在子函数里不用解引用就能直接用

回答:解引用,我查了一下,就是采用 * 指针操作符取内容,实际上这涉及到数组底层的编译处理方式,它只需要初始地址加偏移量即可,这个传过来的指针指向的是数组的第一个元素的地址,已经可以让编译器找到这个数组了,现在再对这个指针进行 * 操作,我也不理解是啥意思,尝试了一下,结果如下:

img

发现,对数组指针进行 * 操作,实际和通过下标访问一样,这应该是编译过程中进行的处理

img

你的子函数my_strlen中就是用的 * 去取地址指向的内容,这就是我们通常取地址所指向内容的方式;
至于子函数reverse_string中直接使用下标去获取对应的内容,可以理解为arr[i] 等于 *(arr+i)