定义string[20],为什么在strcpy中不用string[20]
#include<stdio.h>#include<string.h>intmain(void){charstr[3][20];charstring[20];gets(s...
#include<stdio.h>
#include<string.h>
int main(void)
{char str[3][20];
char string[20];
gets(str[0]);
gets(str[1]);
gets(str[2]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[1],str[2])>0)
strcpy(string,str[1]);
else
strcpy(string,str[2]);
printf("%s",string);
}
比如上面的程序 为什么strcpy中是string,而不是string【20】 展开
#include<string.h>
int main(void)
{char str[3][20];
char string[20];
gets(str[0]);
gets(str[1]);
gets(str[2]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[1],str[2])>0)
strcpy(string,str[1]);
else
strcpy(string,str[2]);
printf("%s",string);
}
比如上面的程序 为什么strcpy中是string,而不是string【20】 展开
2个回答
2013-12-20 · 知道合伙人软件行家
关注
展开全部
string[20] 定义时是表示 20个元素的数组(下角标0~19)。
运行时 string[20] 其实越界了
strcpy 的两个参数传递的是 指针(地址);
对于数组来说,数组名即是常量地址;
数组名也表示其首地址(即等效于string == &string[0]);
但是二维数组 str[0] 表示其的第一行首地址, str[1] 表示其的第二行首地址,以此类推。。。。。
运行时 string[20] 其实越界了
strcpy 的两个参数传递的是 指针(地址);
对于数组来说,数组名即是常量地址;
数组名也表示其首地址(即等效于string == &string[0]);
但是二维数组 str[0] 表示其的第一行首地址, str[1] 表示其的第二行首地址,以此类推。。。。。
2013-12-21
展开全部
数组开始是以0开始的 0到19就是20个了 怎么会有string[20[呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询