gpt4 book ai didi

字符 * 错误访问错误

转载 作者:行者123 更新时间:2023-11-30 18:49:34 26 4
gpt4 key购买 nike

我试图掌握指针的概念,但无法掌握它的窍门。为什么此代码将正确的值分配给 s ,但是当我尝试在 t 上使用它时会产生运行时错误。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *s;
char *t;

printf("s: ");
scanf("%s", s);

printf("t: ");
scanf("%s", t);

return 0;
}

最佳答案

您必须为字符指针动态分配内存,否则它将无法工作。未初始化的指针有垃圾。

//a macro to hold the size of the array.

#define DIM 12

char *s = malloc(sizeof(char) * DIM);
char *t = malloc(sizeof(char) * DIM);

printf("s: ");
scanf("%s", s);

printf("t: ");
scanf("%s", t);

使用完内存后,不要忘记从堆中释放内存。

free(t);
free(s);

如果您不想在堆上分配内存,则可以使用 char 数组,在使用 scanf 后无需释放该数组:

char t[DIM];
char s[DIM];

关于字符 * 错误访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42475822/

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