一道二维数组元素引用的问题
本帖最后由 百变kelvin 于 2016-8-7 14:17 编辑#include<stdio.h>
void main()
{
char a = {"one", "two", "three", "four", "five"};
int i, j;
char t;
for(i=0; i<2; i++)
for(j=i+1; j<5; j++)
if(a > a)
{
t = a;
a = a;
a = t;
}
puts( a );
}
程序的输出结果是 fwo
两个不理解
一是像这种给出字符串的二维数组,如a这种是对应哪个字符串或者说对应哪个字符串的字母?
二是它要输出的是a,这是什么意思呢,怎么就得到fwo了?
还请大家多多指导一下,谢谢。 本帖最后由 廿文廿武 于 2016-8-6 17:32 编辑
楼主用的什么IDE,神了,你一步一步的调试就知道是什么回事了,前面的FOR循环只是把数组里的元素改来改去,循环结束后a被改成fwo了,当然是输出这个结果了。
#include <stdio.h>
int main()
{
char a = { "one","two", "three", "four", "five" };
int i, j;
char t;
for (i = 0; i<2; i++)
{
for (j = i + 1; j<5; j++)
{
if (a > a)
{
t = a;
a = a;
a = t;
}
}
}
puts(a);
return 0;
}
一是像这种给出字符串的二维数组,如a这种是对应哪个字符串或者说对应哪个字符串的字母?
a = 'o' a = 'w'a = 'i'
二是它要输出的是a,这是什么意思呢,怎么就得到fwo了?
a会输出fwo上面说过了,如果没循环之前的结果就是
a = "one"
a = "two"
a = "three"
a = "four"
a = "five" 楼主基础不行啊、
楼上讲了主要的问题我补充一点细节、
1、数组名就代表数组首地址、
2、对于puts函数来说、当输出是一个字符串遇到'\0'标志才结束、
所以给puts函数传入一个字符串首地址参数、就会连续往后读到'\0'输出才结束、
同理、你也可以不传入首地址、一个字符串中间地址、那就输出后面半截字符串、
我还是提供一个例子把:
#include <stdio.h>
int main()
{
char a = { "one","two", "three", "four", "five" };
int i, j;
char t;
for (i = 0; i<2; i++)
{
for (j = i + 1; j<5; j++)
{
if (a > a)
{
t = a;
a = a;
a = t;
}
}
}
puts(&a);
return 0;
}
廿文廿武 发表于 2016-8-6 17:29
楼主用的什么IDE,神了,你一步一步的调试就知道是什么回事了,前面的FOR循环只是把数组里的元素改来改去, ...
没,这段代码不完全,只是给出了主要代码,是一道题目来着,谢谢你的指导。 lx_Zz 发表于 2016-8-6 18:19
楼主基础不行啊、
楼上讲了主要的问题我补充一点细节、
1、数组名就代表数组首地址、
是啊,基础不太好,C语言也是最近才开始学,所以遇到很多问题。谢谢你的指导。
页:
[1]