gpt4 book ai didi

C char 指针和函数参数传递

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

getData和getData2这两个函数都能得到正确的答案,它们有效吗?

 #include<stdio.h>
#include<stdlib.h>
void getData(const char** data) {
if(data == NULL) {
printf("NULL\n");
}
*data = "error";
}
const char* getData2() {
const char*p = "hello";
return p;
}
int main(){
const char *p = NULL;
getData(&p);
printf("data:%s\n",p);
printf("data2:%s\n",getData2());
}

最佳答案

char* p = "hello";

自 C++11 以来不允许这样做,但早期版本允许。

字符串文字“hello”存储在无法修改的只读内存中,但指向非常量char的指针能够让内存被修改,当指向字符串文字时,这会在运行时崩溃。

现代编译器不会接受从 const char*char* 的这种转换。

char** data 参数和 *data = "error"; 赋值相同。 data 的类型应为 const char** 以使赋值合法。

关于C char 指针和函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648181/

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