二维数组地址和指向其第一个元素的对应指针
发布时间:2020-12-16 09:58:37 所属栏目:百科 来源:网络整理
导读:就一维数组而言,其数组名称也是第一个元素的地址.所以可以将它分配给指针,如下所示: char data[5];char* p_data=data; 所以我认为它应该与二维数组相同.数组名称应该是第一个元素地址的地址.所以,我想做这样的事情: char data[5][5];char** pp_data=data;
就一维数组而言,其数组名称也是第一个元素的地址.所以可以将它分配给指针,如下所示:
char data[5]; char* p_data=data; 所以我认为它应该与二维数组相同.数组名称应该是第一个元素地址的地址.所以,我想做这样的事情: char data[5][5]; char** pp_data=data; 然后我收到警告说指针类型char **与char [] []不兼容. 为什么会这样?我理解指针和数组概念错了吗? 解决方法
你是对的,数组通常由指向其第一个元素的指针引用.但是当你拥有“二维”阵列时
char data[5][5]; 你实际拥有的是一个数组数组.数组数据的第一个元素是一个包含5个字符的数组.所以这段代码可行: char (*pa_data)[5] = data; 这里pa_data是一个指向数组的指针.编译器不会抱怨它,但它实际上可能对您有用,也可能没有用. 确实,像char ** pp_data这样的指针指针可以像二维数组一样工作,但你必须做一些内存分配才能使它工作.事实证明,在数组数组char数据[5] [5]中,没有指向pp_data的指针指向char. (特别是,你不能说像pp_data =& data [0] [0].) 另见C FAQ list中的this question. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |