char name[5][10]; 以正确赋值引用时可不可以用name[0]表示name[0][0]到name[0][9]用name[4]表示name[4][0]到name[4][9]
图中的源程序对char name[5][10]的引用是不是错误
是不是只有字符数组可以这样用
追答这是通用法则,你可以换成int试着访问其中的某些元素。例子很多,搜索一下
追问字符数组可这样做,我可以理解因为有结束符0存在
数据数组这样做有什么意义,数据数组有没有结束符他是如何确定范围的。
搜索用什么关键词?
可以用name【0】表示name【0】【0】吗
追答不可以的。要用到数组指针运算。
追问图中的源程序对char name[5][10]的引用是不是错误
书上没错。你把name[0]看作char*的指针,题中相当于指向一个字符串,就容易理解了。
name[0]是name[0][0]~name[0][9]这一列的首地址,也是指一个字符串的开头。
name[0][0]到name[0][9]相当于一段内存存放了10个char型数据,name[0][0]是第一个数据,而name[0]存放着第一个数据所在的地址,即:name[0] 和 &name[0][0]相等。
name[0]无法表示name[0][0],不加下标,只能采用指针方式访问:**name即name[0][0],*(*name+1)即name[0][1]……以此类推。
是不是只有字符数组可以这样用
追答字符数组存放字符串以'\0'结尾,可以这样用。
其它情况下,需要同时传入长度,不能直接给一个name[0]。
比如double d[5][10],函数为add(double* p)时,写add(d[0])没错,但add只会读取d[0][0],因为它不知道后面还有些什么。