我试图理解C中的指针,但我目前对以下内容感到困惑:
char *p = "hello"
Run Code Online (Sandbox Code Playgroud)
这是一个指向字符数组的char指针,从h开始.
char p[] = "hello"
Run Code Online (Sandbox Code Playgroud)
这是一个存储hello的数组.
将这两个变量都传递给这个函数有什么区别?
void printSomething(char *p)
{
printf("p: %s",p);
}
Run Code Online (Sandbox Code Playgroud) 我的实现strcat(char*, const char*)似乎有效,但随后会导致核心转储。
strcat() 执行:
char* strcat(char* dest, const char* src)
{
char* tmp = dest;
while(*tmp) ++tmp ;
while( (*tmp++ = *src++ ) != '\0') ;
return (dest);
}
Run Code Online (Sandbox Code Playgroud)
代码在int main()那里我打电话的strcat():
char arr3[] = "Mr. ";
char arr4[] = "Smith";
printf("Hello %s!", strcat(arr3, arr4));
Run Code Online (Sandbox Code Playgroud)
它实际上连接了两个字符串并将其打印出来,但仍然导致核心转储。
输出:你好,史密斯先生!中止(核心转储)
我做错了什么?
我觉得在一个字符串中用C替换两个字符会让人感到困惑.当我将它设置为数组时,它会很好用:
char strBase[8] = "acbdefg";
在这种情况下,我可以交换任何角色.但是当我将其设置为字符串时,它会触发总线错误:
char *strBase = "acbdefg";
非常感谢任何人都可以解释它或给我一些暗示!