根据你的要求编写的C语言程序如下:
#include<stdio.h>int main()
{
char a[3][10]
int i
printf("Please input three words:\n")
for(i=0i<3i++){
scanf("%s",a[i])
}
printf("Output:\n")
for(i=0i<3i++){
printf("%s\n",a[i])
}
return 0
}
运行结果:
二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址。如:
char arr[2][2] = { { 'a', 'b' }, { 'c', 'd' } }
char (*p)[2]
p=arr // p指向首元素地址。
char c = *(p[0]+ 1)// 指向0行1列 即字符b
这个没有办法。因为数组的数组名虽然本质上是一个指针,但它是一个指针常量
,也就是说a[0]是指针没错,但a[0]=a[1]这样是错误的。因为无法对a[0]重新赋值。所以你说的这种没有办法实现,这是C/C++的规则限定的。除非你用指针p,q来代替a[0]、a[1]。