|
|
发表于 2023-9-9 18:30:58
|
显示全部楼层
问题在于 computer_put 函数返回的是一个指向局部变量 str 中某个元素的指针,而这个指针在函数返回后就失效了。因此在 main 函数中使用 q 指针时,会访问到已经被释放的内存,导致程序崩溃或输出错误结果。
正确的实现应该是将 str 数组作为函数参数传入,并将 num 直接作为下标访问 str 数组,然后返回对应的字符串指针。
修改后的代码如下:
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- char *computer_put(char **str);
- char *computer_put(char **str)
- {
- srand((unsigned)time(NULL));
- int num = rand() % 3;
- return str[num];
- }
- int main()
- {
- char *str[3] = { "剪刀","石头","布"};
- char *q;
- q = computer_put(str);
- printf("%s", q);
- return 0;
- }
复制代码 |
|