在C中取消引用字符指针

时间:2013-02-09 04:08:45

标签: c pointers

这是我的代码:

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数组实现我想要的,但为什么我不能用指针做同样的事情呢?

3 个答案:

答案 0 :(得分:4)

你不能用C语言分配字符串。你需要使用strcpy(3)或其中一个亲戚。

答案 1 :(得分:1)

有一些问题:

*str = "Hello"; // or pass it any string
  • strchar**strchar"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 *会产生错误。