gpt4 book ai didi

c - 关于string和char的面试题

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

我遇到了一家公司的两个问题。这两个问题让我很困惑。谁能帮忙解释一下答案的原因?

  1. 写出结果。

    void Test(void){
    char *str = (char *) malloc(100);
    strcpy(str, “hello”);
    free(str);
    if(str != NULL){
    strcpy(str, “world”);
    printf(str);
    }
    }

    Ans:它会输出“world”

  2. 写出结果。

    char *GetMemory(void){
    char p[] = "hello world";
    return p;
    }

    void Test(void){
    char *str = NULL;
    str = GetMemory();
    printf(str);
    }

    答案:输出未知,因为指针无效。

最佳答案

两个结果都在 undefined behaviour 中.

首先是因为您在释放指针 (str) 之后使用它(free() 没有/不能将指针设置为 NULL在成为障碍之后)。

第二个是因为您正在使用指向另一个函数的局部变量的指针。

关于c - 关于string和char的面试题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900269/

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