【发布时间】:2020-06-07 16:29:56
【问题描述】:
我想知道为什么在使用指向 char 的指针时会出现问题,但是当我使用 char 数组时,却什么也没得到,而且它可以工作?
int main()
{
char* s="hello world124"; //doesn't work;
//char s[20]="hello world124"; // it does work
int i=0;
for(;i<strlen(s);i++)
{
while(!(s[i]>='a' && s[i]<='z') && !(s[i]>='A' && s[i]<='Z') && s[i]!='\0' && s[i]!=32)
{
for(int j=i;s[j]!='\0';j++)
s[j]=s[j+1];
}
}
s[i]='\0';
printf("%s",s);
return 0;
}
【问题讨论】:
-
@pzaenger 编译器会附加终止的 null - 这意味着任何字符串文字都以这种方式终止。
-
声明
char* s="hello world124";使s成为指向 constant 字符串文字的指针,如链接副本中所述。但是char s[20]="hello world124";声明了一个 modifiable 数组,并使用字面量中的 data 对其进行初始化。
标签: c