请看一下代码,clang给我的错误是"不兼容的整数转换指针",为什么会发生?
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char* name;
name = malloc (sizeof(char) * 6);
*name = "david";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
K-b*_*llo 12
无论发生什么事都发生在这条线上:
*name = "david";
Run Code Online (Sandbox Code Playgroud)
类型*name将是char,因为您正在解引用char指向的name.类型"david"是char[6],因为它是6个字符的字符串文字(5 + null终止符).数组类型衰减为指针,a char是整数类型 ; 你的赋值试图设置一个指向整数的指针,因此incompatible pointer to integer conversion.
即使赋值的左侧具有正确的类型,也不能只使用赋值运算符复制数组.如果你想设置name到"david",那么你就应该使用strcpy( name, "david" ).
在C编程中,您永远不能将字符串直接复制/分配到指针中
*name = "david";
Run Code Online (Sandbox Code Playgroud)
您可以只复制使用字符串memcpy()(内置功能).为了解决这个问题替换行
*name = "david";用memcpy(name,"david",sizeof("david"));