在C中取消引用字符指针

Dereferencing a character pointer in C

这是我的代码:

1
2
char *str = malloc(100*sizeof(char));
*str ="Hello"; // or pass it any string

现在我想在函数中传递str

系统打开(const char*文件名,int标志,int模式)

当我使用char数组作为第二个参数时,它是有效的,但是使用复制值的指针是无效的。

我可以用一个char数组来实现我想要的,但是为什么我不能用一个指针来实现呢?


在C中不能这样分配字符串。您需要使用strcpy(3)或它的一个亲属。


有一些问题:

1
*str ="Hello"; // or pass it any string
  • strchar**strchar"Hello"const char*(好吧,实际上是const char[6]衰变成const char*。把一个const char*分配给一个char是违法的。

  • 假设您的意思是str ="Hello";,这仍然是错误的,因为它重新分配指针str指向字符串文字"Hello"。您以前分配给malloc的内存现在没有任何指向它的内容,您已经泄漏了内存。

  • str传给sys_read是行不通的。str指向的是字符串文字,而不是您分配的可写内存。count不仅是错误的,而且sys_read根本就写不出来。(字符串文本是不可变的,尝试修改一个文本将导致未定义的行为。)


在程序中,我觉得缺少类型转换,因为malloc返回一个void *并将其分配给char *会产生错误。