下面的题选择哪一个,为什么?
若有定义:char*st="howareyou";下列程序段中正确的是()A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];...
若有定义:char *st="how are you";下列程序段中正确的是( )
A)char a[11],*p;strcpy(p=a+1,&st[4]);
B)char a[11];strcpy(++a,st);
C)char a[11],*p;strcpy(a,st);
D)char a[ ],*p;strcpy(p=&a[1],st+2); 展开
A)char a[11],*p;strcpy(p=a+1,&st[4]);
B)char a[11];strcpy(++a,st);
C)char a[11],*p;strcpy(a,st);
D)char a[ ],*p;strcpy(p=&a[1],st+2); 展开
1个回答
展开全部
A)char a[11],*p;strcpy(p=a+1,&st[4]); //正确。
B)char a[11];strcpy(++a,st); //错误。a是数组名,++a是错误的。
C)char a[11],*p;strcpy(a,st); //错误。a有11个元素,而"how are you"有12个字符。最后是:'\0'字符,a放不下。
D)char a[ ],*p;strcpy(p=&a[1],st+2); //错误。没有指定数组a元素个数,又没有初始化,不允许。
B)char a[11];strcpy(++a,st); //错误。a是数组名,++a是错误的。
C)char a[11],*p;strcpy(a,st); //错误。a有11个元素,而"how are you"有12个字符。最后是:'\0'字符,a放不下。
D)char a[ ],*p;strcpy(p=&a[1],st+2); //错误。没有指定数组a元素个数,又没有初始化,不允许。
追问
++a是不合法的吗?那p=a+1是合法的???还有D你说的错误是什么意思啊
追答
1 ++a不修改a的值(而数组名的值允许修改),p=a+1不会修改a的值;
2 定义数组时,必须能确定数组元素的个数,否则就是错误。如:
int a[]={0,1,2,3}; //通过初值,可以确定元素个数,因此定义合法。
int a[]; //不能确定元素个数,因此不合法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询