主题:帮我解释下
#include <stdio.h>
#include <stdlib.h>
struct st {
char c;
char s[80];
};char *f(struct st t);
int main(int argc, char *argv[])
{
int k;
struct st a[4]=
{{'1',"123"},{'2',"321"},{'3',"123"},{'4',"321"}};
for (k=0;k<4;k++)
printf("%s\n",f(a[k]));
system("PAUSE");
return 0;
}
char * f(struct st t)
{
int k=0;
while (t.s[k]!='\0'){
if (t.s[k]==t.c)return t.s+k; //就这条语句 return 后面的什么意思?
k++;
}
return t.s;
}
这是一题2级考试题目 输出结果是 123 21 3 321 但是不知道第一个 return t.s+k 什么意思?
还有 这个程序打入 编译器里 输出是乱码 但是把a[80]改成a[300]就和答案一样了 为什么? a[80]不是只给个空间么?
#include <stdlib.h>
struct st {
char c;
char s[80];
};char *f(struct st t);
int main(int argc, char *argv[])
{
int k;
struct st a[4]=
{{'1',"123"},{'2',"321"},{'3',"123"},{'4',"321"}};
for (k=0;k<4;k++)
printf("%s\n",f(a[k]));
system("PAUSE");
return 0;
}
char * f(struct st t)
{
int k=0;
while (t.s[k]!='\0'){
if (t.s[k]==t.c)return t.s+k; //就这条语句 return 后面的什么意思?
k++;
}
return t.s;
}
这是一题2级考试题目 输出结果是 123 21 3 321 但是不知道第一个 return t.s+k 什么意思?
还有 这个程序打入 编译器里 输出是乱码 但是把a[80]改成a[300]就和答案一样了 为什么? a[80]不是只给个空间么?