这是我的代码:
char *str = malloc(100*sizeof(char));
*str ="Hello"; // or pass it any string
现在我想在函数中传递str
:
sys_open(const char * filename,int flags,int mode)
当我使用char数组作为第二个参数时,它可以工作,但使用其值被复制的指针不起作用。
我可以通过char数组实现我想要的,但为什么我不能用指针做同样的事情呢?
答案 0 :(得分:4)
你不能用C语言分配字符串。你需要使用strcpy(3)
或其中一个亲戚。
答案 1 :(得分:1)
有一些问题:
*str = "Hello"; // or pass it any string
str
为char*
,*str
为char
,"Hello"
为const char*
(嗯,实际为{{} 1}}衰变为const char[6]
)。将const char*
分配给const char*
。
假设您的意思是char
,那仍然是错误的,因为它正在重新指定指针str = "Hello";
以指向字符串 literal str
。您之前使用"Hello"
分配的内存现在没有指向它,并且您已泄露内存。
将malloc
传递给str
,这样做无效。 sys_read
指向不是您已分配的可写内存的字符串文字。 str
不仅会出错,而且count
根本无法写入。{1}}。 (字符串文字是不可变的,尝试修改它会导致未定义的行为。)
答案 2 :(得分:-2)
在程序中,我觉得有一个类型转换丢失,因为malloc返回void *
并将其分配给char *
会产生错误。