【发布时间】:2015-07-04 18:43:28
【问题描述】:
我在 C 中做一些指针和数组练习,我注意到我所有的四种方法都返回了相同的答案。我的问题是使用以下任何一种方法都有缺点吗?我对这四个如何给我相同的输出感到震惊。我刚刚注意到您可以像使用数组一样使用指针,也可以像使用指针一样使用数组?
char *name = "Madonah";
int i= 0;
for (i=0;i<7; i++){
printf("%c", *(name+i));
}
char name1 [7] = "Madonah";
printf("\n");
int j= 0;
for (j=0;j<7; j++){
printf("%c", name1[j]);
}
char *name2 = "Madonah";
printf("\n");
int k= 0;
for (k=0;k<7; k++){
printf("%c", name2[k]);
}
char name3 [7] = "Madonah";
printf("\n");
int m= 0;
for (m=0;m<7; m++){
printf("%c", *(name+m));
}
结果:
Madonah
Madonah
Madonah
Madonah
【问题讨论】:
-
使用
char * name= malloc(sizeof(char)*8); strcpy(name,"Madonah");,这样您之后可以轻松释放空间。 -
记得为
'\0'分配内存。 C 中的字符串文字会自动附加'\0' -
注意:第一个和最后一个相同,除了索引变量的名称(
ivs.m);name3在此代码中未使用。 -
@pcluddite 感谢编辑评论
-
@RichardPennington 在这种情况下它可以工作,但是对于通常的字符串操作它不会工作(
printf("%s",name1)会失败)