如何将字符串存储到char指针?

时间:2015-04-07 07:35:22

标签: c

我对以下程序感到困惑

#include<stdio.h>
void main()
{
char *string;
string = (char *)malloc(5);
string = "abc";  // <<<<<<<<<< why *string="abc" is not working. How string = "abc" is working?
printf("%s", string);
}

但整数相同的程序正在运作

char *i;
 i=(int *)malloc(sizeof(int));
*i=4;  <<<<<<<< this is working fine
printf("%d",*i);

2 个答案:

答案 0 :(得分:1)

*string指出单个字符。这里"abc"是字符串文字。它不是一个角色。

*string='a'; // It will work.

Don't cast malloc及其家族的结果。

您可以使用strcpy功能执行此操作。

strcpy(string,"abc");

答案 1 :(得分:0)

为什么*string = "abc"无效?

string被定义为char的指针。 *string是一个字符。 "abc"是一个字符串文字。您实际上是将字符串文字的地址分配给char,编译器应该发出如下警告:

warning: assignment makes integer from pointer without a cast

例如,*string = 'a';将起作用,因为只分配了一个字符。

string = "abc"如何运作?

因为字符串文字"abc"的地址被分配给string,这是一个指向char的指针。

顺便说一句,这样做会导致malloc()丢失先前分配的内存并导致内存泄漏。

如何将字符串存储到char指针中?你可以使用:

strcpy(string, "abc");