这是我的代码:
char *str = malloc(100*sizeof(char));
*str ="Hello"; // or pass it any string
现在我想传入str函数:
sys_open(const char * 文件名,int 标志,int 模式)
当我使用 char 数组作为第二个参数时,它可以工作,但使用其值被复制过来的指针不起作用。
我可以用 char 数组实现我想要的,但为什么我不能用指针做同样的事情呢?
您不能在 C 中以这种方式分配字符串。您需要使用strcpy(3)它或其亲属之一。
有几点不对:
*str = "Hello"; // or pass it any string
stris char*, *stris a char, and "Hello"is a const char*(嗯,实际上const char[6]它衰减成const char*)。将 a 分配给 a 是非法const char*的char。
假设您的意思是str = "Hello";,那仍然是错误的,因为它正在重新分配指针str以指向字符串文字 "Hello"。您之前分配的内存malloc现在没有任何指向它,并且您已经泄漏了内存。
在你做的时候传递str给sys_read你是行不通的。 str指向一个字符串文字,而不是您分配的可写内存。不仅会count出错,而且sys_read根本无法写入。(字符串文字是不可变的,尝试修改它会导致未定义的行为。)
在程序中,我觉得缺少类型转换,因为 malloc 返回 avoid *并将其分配给char *会产生错误。