为什么C语言这里就可以用str[0]和str[1]表示长度为20的字符串
#include"string.h"/*strcmp、strcpy函数均在string.h中定义*/voidmain(){charstring[20];/*存最大字符串*...
#include "string.h" /* strcmp、strcpy函数均在string.h中定义 */
void main()
{
char string[20]; /* 存最大字符串 */
char str[3][20]; /* 三个字符串 */
int i;
for(i=0;i<3;i++)
gets(str[i]); /* 输入三个字符串 */
if (strcmp(str[0],str[1]) > 0) strcpy(string,str[0]);
else strcpy(string,str[1]);
if (strcmp(str[2],string) > 0) strcpy(string,str[2]);
printf("\nthe largest string is: \n%s\n",string);
}
我知道这是一个很典型的三个字符串输出最大字符串的程序 展开
void main()
{
char string[20]; /* 存最大字符串 */
char str[3][20]; /* 三个字符串 */
int i;
for(i=0;i<3;i++)
gets(str[i]); /* 输入三个字符串 */
if (strcmp(str[0],str[1]) > 0) strcpy(string,str[0]);
else strcpy(string,str[1]);
if (strcmp(str[2],string) > 0) strcpy(string,str[2]);
printf("\nthe largest string is: \n%s\n",string);
}
我知道这是一个很典型的三个字符串输出最大字符串的程序 展开
2个回答
展开全部
char str[3][20]; 是一个二维数组,
由三个长度为20的字符串数组组成。
三个数组的第一元素分别可以是str[0][0],str[0][1],str[0][1]
按按数组特性,当去掉下标是就是就是该数组地址,
因此str[0],str[0],str[0]分别代表三数组地址。
三个数组容量为20,使用sizeof函数可以获取容量大小,
长度由为从头开始到‘\0’,使用strlen函数可以获取长度。
请楼主确认下,你获取的长度是容量还是字符串长度。
由三个长度为20的字符串数组组成。
三个数组的第一元素分别可以是str[0][0],str[0][1],str[0][1]
按按数组特性,当去掉下标是就是就是该数组地址,
因此str[0],str[0],str[0]分别代表三数组地址。
三个数组容量为20,使用sizeof函数可以获取容量大小,
长度由为从头开始到‘\0’,使用strlen函数可以获取长度。
请楼主确认下,你获取的长度是容量还是字符串长度。
追问
因此str[0],str[0],str[0]分别代表三数组地址这句话应该是str[0] str[1] str[2]吧。我没有取长度吧,。就是一个字符串大小比较从左到右。
还有就是“按数组特性,当去掉下标是就是就是该数组地址”有这说法吗
追答
char arr[10] = 0;
容量为10
长度为0
arr或者&arr[0]为元素首地址,arr+1为第二元素地址
arr也是数组名
&arr为数组地址,地址和arr相同但是用处不同
同理可以推导二维数组。
同时你可以尝试下敲个代码,输出它们的地址,一看就明白了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询