黑马程序员技术交流社区
标题:
结构体数组问题!!求正解!!
[打印本页]
作者:
FlyTrem
时间:
2014-4-18 19:09
标题:
结构体数组问题!!求正解!!
#include<stdio.h>
#include<string.h>
int jishu();
int main()
{
struct str
{
char a[20];
int no;
};
char a[20]="a1", b[20]="b1", c[20]="c1", d[20]="d1", e[20]="e1", f[20]="f1";
int sum1 = jishu(a);
int sum2 = jishu(b);
int sum3 = jishu(c);
int sum4 = jishu(d);
int sum5 = jishu(e);
int sum6 = jishu(f);
struct str d1;
struct str z[6] = { { a, sum1 }, { b, sum2 }, { c, sum3 }, { d, sum4 }, { e, sum5 }, { f, sum6 } };
printf("%s", z[0].a);
return 0;
}
int jishu(char a[])
{
int sum = 0;
for (int i = 0; i < strlen(a); i++)
{
sum = sum + a[i];
}
printf("%d\n", sum);
return sum;
}
复制代码
为什么将数组放入结构体数组中,输出的结构并不是自己想要的!
作者:
Freedam
时间:
2014-4-19 23:21
代码这样修改一下就能正确输出了
#include<stdio.h>
#include<string.h>
int jishu();
int main()
{
struct str
{
char a[20];
int no;
};
char a[20]="a1", b[20]="b1", c[20]="c1", d[20]="d1", e[20]="e1", f[20]="f1";
int sum1 = jishu(a);
int sum2 = jishu(b);
int sum3 = jishu(c);
int sum4 = jishu(d);
int sum5 = jishu(e);
int sum6 = jishu(f);
struct str d1;
struct str z[6] = { { "a1", sum1 }, { "b1", sum2 }, { "c1", sum3 }, { "d1", sum4 }, { "e1", sum5 }, { "f1", sum6 } };
printf("%s", z[0].a);
return 0;
}
int jishu(char a[])
{
int sum = 0;
for (int i = 0; i < strlen(a); i++)
{
sum = sum + a[i];
}
printf("%d\n", sum);
return sum;
}
复制代码
原因我测试了一下,是字符数组给字符数组间赋值出现了问题。
如果按照原来的赋值方式就是
struct str z[6] = { { a, sum1 }, { b, sum2 }, { c, sum3 }, { d, sum4 }, { e, sum5 }, { f, sum6 } };
虽然在语法上没错但是转换一下就成了如下所示
z[0] char a[20] = a;
int no = sum1;
z[1] char a[20] = b;
int no = sum2;
.........
..........
以此类推直到最后。
首先看到int no = sum1;这样赋值可以。但是char a[20] = a;这样赋值有错误。这样赋值编译可运行。但是a数组在初始化的时候接收到的只是a数组的首地址并不是将a数组赋值成“a1”。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2