C语言指针问题?

2024-10-29 12:27:39
推荐回答(3个)
回答1:

你好,二者并不等价, 首先我们知道,a[i]是指向一个有20个char元素的char数组 而p是指向指针的指针
我们可以来分析啊 当你 p=a 时, p即a[0] [0] 的地址 此时你*p 即为取出a[0] [0] 的内容即为'a', 而当你 **p 的时候 就出错了, 这时候你就是在对 ‘a’ 这个字符取地址,这时候就会出现内存异常错误,你肯定是不能对97取地址。你可以强制转换赋值然后自己试一下 即可
p = (char **)a;

回答2:

数组名可以看作指针,但是和指针又是有区别的,网上有很多例子,本身将数组名赋值给指针也是做了隐式的转换。编译报错已经说明了原因,cannot convert ‘char [3][20]’ to ‘char**’,编译器认为两种指针的类型不同,所以无法赋值。对于二维数组应该定义指向数组的指针来使用char (*p)[20],多维数组同理,可以当做是语法规定

回答3:

公司额u额u五我IEUR就金额居然就三级濡染有呀让他估计他忽然呵呵哈手机额吉手机忘记