gpt4 book ai didi

更改传递指针的函数中的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:43 24 4
gpt4 key购买 nike

你好,我的指针有点问题!

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

void test(char **str)
{
*str = (char *)malloc(sizeof(char) * 2);
*str[0] = 'b';
*str[1] = '\0';
}

int main(void)
{
char *str;

test(&str);
printf("%s\n", str);
return (0);
}

所以我在我的函数测试中传递了一个未分配字符串的指针,然后我在函数中分配了我的字符串并尝试操作它但是这个代码段错误所以我想我在我的指针类(class)中遗漏了一些东西:)

你能帮我弄清楚这里发生了什么吗?非常感谢!

编辑:当我删除 main 中的 return (0) 时,代码会编译并显示我的 char * ! super 奇怪

最佳答案

数组下标运算符[] 的优先级高于间接运算符*。所以对 str 的赋值实际上是这样的,这是不正确的:

*(str[0]) = 'b';
*(str[1]) = '\0';

需要加括号:

(*str)[0] = 'b';
(*str)[1] = '\0';

关于更改传递指针的函数中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706837/

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