c语言大神进
c语言中,例如一个二维数组a[3][4],则a与a[0]代表的意思一样吗?a与*a呢?我在书上看它们代表的意思一样,可为什么这样的语句是错误的,如下
char str[][10]={"ok","good"},*p;
p=str;
上一句是错的,而p=str[0]则是正确的,str与str[0]不都是代表二维数组str[0][0]吗?
题主还是不理解指针。
这个定义里str相当于一个二维指针,而p是一维指针。
二维数组在内存中按行存储,所以可以说整个二维数组包含两个一维数组,也就是两行,第0行是“ok”,第一行是“good”。 "ok"和"good"的首地址分别为(一维指针)str[0]和str[1],str[0]只是指向二维数组第一行的(一维)指针,而str是指向整个二维数组的(二维)指针,所以,p和str[0]都是一维字符型指针,赋值是没问题的,但是p=str;是不对的。
追问谢谢啊