...
匿名网友:
a比a少一维,我具体给你解释下。
几个元素可以组成数组,而几个一维数组可以组成二维数组,如此一直增加维数。
比如说a0=2,a1=1,a2=3,组成一个一维数组,这就是a.但是,你要注意,a不是直接把这些东西都存着的,a只存首地址。
假设定义了一个二维数组a33.这时候a0,a1,a2就不再是元素了,而代表的是一个有三个元素的一位数组,而此时的a就是一个二维数组。
如果感觉这个有点困难没关系,等学习了指针什么的久很好理解这个了。
再说说你给的程序,你是不是在疑问为什么gets)直接给str1 就可以了?还有那个输出函数,为啥只用给str1就可以?这得给存储方式有关,字符串就是字符的二维数组,gets)需要输入字符串的首地址,这个还算好理解,因为你应该学过了scanf)了,二者差不多,关键是为什么输出函数直接就写了str1呢?printf)之前你学的一般都是printf("%d",a1);这种类型的。
这里为啥要填一个地址参数呢?这是因为你前面是%s s代表字符串,字符串本身就是二维的,因此,你当然不能只给他一个单独的元素了,那么,你给了首地址他如何知道你这个字符串是啥呢?因为字符串都是顺序存储的,更重要的是字符串在结尾处有个标志“/0”,因此,你只要给力他首地址,他就知道从哪里开始,从哪里结束了。
纯手打,望~~。
匿名网友:
能具体说说吗?我这样只能猜着回答。
。
。
比如你a是个表达式,写在别的表达式里,这样防止出现错误,比如:#define a 1024+6int main(){ int b=a*4; printf("b=%d\n",b); getch(); return 0;}你这样写 就是b=1024+6*4=1024+24=1048;但是 如果你写成 #define a (1024+6) 就不会出现错误了,现在就是 b=(1024+6)*4=4120如果你想问的不是这个,就说清楚了。
。
。
否则我真心没法答。
。
。
...