为什么这个有效:
#include <stdio.h>
void slice(char *st, int m, int n)
{
int i = 0;
while ((i + m) < n)
{
st[i] = st[i + m];
i++;
}
st[i-1] = '\0';
}
int main()
{
char st[] = "Hello";
slice(st, 1, 6);
printf("The value of string is %s\n", st);
return 0;
}
这并不会:
#include <stdio.h>
void slice(char *st, int m, int n)
{
int i = 0;
while ((i + m) < n)
{
st[i] = st[i + m];
i++;
}
st[i-1] = '\0';
}
int main()
{
char*st = "Hello";
slice(st, 1, 6);
printf("The value of string is %s\n", st);
return 0;
}
起初,我使用以下代码初始化了字符串:
char st[]="Hello";
(使用数组)
后来,我又使用了以下代码:
char*st="Hello";
(使用指针)
我有些混淆了这两种初始化方式之间的关键区别。使用char st[]="Hello";
和char*st = "Hello";
声明字符串有什么区别呢?