gpt4 book ai didi

c - 如何将字符串存储到字符指针中?

转载 作者:太空狗 更新时间:2023-10-29 15:35:27 26 4
gpt4 key购买 nike

我对下面的程序感到困惑

#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);

最佳答案

为什么 *string = "abc" 不起作用?

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

warning: assignment makes integer from pointer without a cast

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

string = "abc" 是如何工作的?

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

顺便说一句,这样做会丢失之前由 malloc() 分配的内存并产生内存泄漏。

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

strcpy(string, "abc");

关于c - 如何将字符串存储到字符指针中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com