类似跨越一个维度的指针指向

来源:7-8 函数指针与typedef

学以致用over

2022-03-20

老师,您好,关于7-8函数指针视频中,使用

void (*fuc)(int ***ptr, int row, int col) =  &InitPointer;

这句代码不太懂,如果函数 InitPointer() 相当于数组,那定义

void (*fuc)(int ***ptr, int row, int col) =  InitPointer;

应该就可以了吧,应该不需要再取地址了吧?我试了试在数组中定义

int arr[5] = {1, 2, 3, 4, 5};
int *p = &arr;

编译器提示应该用**p接收arr的地址,使用内存视图查看地址也发现这种定义情况下*p指的是另一个空间,**p才指向arr[0]地址空间,但是奇怪的是p[0]居然是被允许的,而且p[0]恰好等于1,请问老师这种类似跨越一个维度指针指向是什么一种情况?
图片描述

写回答

1回答

bennyhuo

2022-03-20

函数名和数组名取地址得到的就是函数和数组的地址,实际上函数名和数组名本身也是个地址,因此取不取地址在这里实际上是一样的。

0
1
学以致用over
哦哦,谢谢老师
2022-03-21
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程