C语言中这两条语句有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:36:31
如下所示:
char * str ="I am a string...";
char str[] = "I am a string, too...";
这两条语句有什么区别呢?

还有就是请看如下代码

int cutString(char * str, int length)
{
if (strlen(str) > length)
{
*(str + length) = '\0';
return 1;
}
else
return 0;
}
这是我写的一个截取字符串的函数
在main 方法中
int main(void)
{
char * str ="I am a string...";//编译通过,但执行下面函数运行时会出现内存错误
char str1[] = "I am a string, too...";...";//编译通过,正确执行
cutString(str, 3);

}
请问这是什么原因呢?
补充一点,char * str ="I am a string...";假设该字符串长为LENGTH,则*(str+LENGTH) =‘\0’
那么以数组的方式char str1[] = "I am a string, too...";初始化的话,假设该数组长度为N,那么str1[N]是不是空字符呢?

char * str ="I am a string...";说明str是一个指针,指向内存中的一段字符串,这个字符串是个常量,不能被改变,所以会出现错误。在标准C语言中,常量是不能被改变的

C/C++资讯站 专注于C/C++
www.ccbeta.net