c语言问题,下列代码中,定义a为二维数组而输入却是一维数组?而下面又用了a的二维数组?
解决时间 2021-03-08 06:31
- 提问者网友:佞臣
- 2021-03-08 00:56
c语言问题,下列代码中,定义a为二维数组而输入却是一维数组?而下面又用了a的二维数组?#include
int main()
{
char a[4][14],b[4];
int i,j=0;
for(i=0;i<4;i++){
scanf("%s",&a[i]);
}
for(i=0;i<4;i++){
b[j++]=a[i][0];
b[j++]=a[i][1];
}
b[j]='\0';
// for(i=0;i<4;i++){
printf("%s",b);
//}
return 0;
}
最佳答案
- 五星知识达人网友:春色三分
- 2021-03-08 01:52
您好,看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分的并且你的悬赏分也会被没收!所以我给你提几条建议,希望对你有所帮助:
一,
你可以选择在正确的分类和问题回答的高峰时段(中午11:00-3:00 晚上17:00-24:00)去提问,这样知道你问题答案的人才会多一些,回答的人也会多些。
二,你可以请教老师,问问同学,共同学习互相进步
三,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的。
四,网上很多专业论坛以及知识平台,(如作业帮)上面也有很多资料,我遇到专业性的问题总是上论坛求解决办法的。
五,将你的问题问的细一些,清楚一些!让人更加容易看懂明白是什么意思!
~\(^o^)/~祝学习进步~~~
希望对你有帮助,你的采纳就是我们回答的动力!帅气又萌萌哒你不要忘了采纳!!
全部回答
- 1楼网友:我住北渡口
- 2021-03-08 02:31
这个可以说是指针本身的限制所致,多级指针并无合理的数据结构与之对应,所以只能设置一些规则来使用它,但实际计算机中存储数组使用的是什么方式与指针并无对应关系,你不要将二者混淆,使用解引用(即*)操作单纯只是对指针进行的,至于它是如何寻址的那是计算机处理器要做的事,你要做的就是遵守那些规则,从n级指针到n-1级指针需要使用1次解引用操作。(你能搞出这些问题都要归功于数组名是首地址这句话,它和数组的维数无关)
类似的情况还有,比如函数指针,同样会遇到这样的尴尬。
例如有一个函数:int a();
我想在另一个函数中调用不同人写的函数,它们的原型都和a一样,但是内容不同,这时候要用到函数指针了。
void b(int (*p)())//p就是一个函数指针了
{
p();
(*p)();//这两种方式那种正确呢?答案是两种都正确,为什么呢?因为这里面有两种说法:
1.函数名即指向函数的指针,所以指针可以当做函数名,那么第一种方式就是正确的。
2.函数指针也是指针,指针指向的是函数地址,所以要得到函数,先要进行解引用操作,这样看来第二种方式也没错。
那究竟使用哪种才是对的?c/c++做了折衷,这两种方式都是正确的,可以任选其一。
}
没错,c/c++也有一些小地方是有歧义的,但是不要紧,只要遵循标准就行了,遵循标准就不会错。
我要举报
大家都在看
推荐资讯