这里有一些非常简单的测试代码来阐述我的问题:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void prompt();
void func();
int main() {
char* arr = "Hello";
while(1) {
prompt();
}
return 0;
}
void prompt() {
func();
}
void func() {
char* data = NULL;
data = arr;
}
如您所见,我在arr
函数
main()
然后代码进入while()
循环,
进入名为prompt()
的函数
进入名为func()
的函数
arr
。但是,当我尝试编译这段代码(使用gcc)时,我收到错误告诉我
误差:&#39; ARR&#39;未声明的(首先在此函数中使用)`。
另外,我收到警告告诉我
warning: unused variable 'arr'
。
太奇怪了......任何想法?
答案 0 :(得分:3)
您有2个选项
使变量arr为全局(如Sourav所述)
- 醇>
将指向arr变量的指针传递给prompt()函数,然后传递给func()。然后,您可以在func()中使用它。
您选择哪一个取决于手头的任务和项目的复杂性。
如果它是一个简单的项目而且这是一次性的,那么你可以使用全局。
然而,随着项目复杂性的增加,特别是如果您要在多个地点进行此项工作,我强烈建议您付出努力,然后选择选项2 。
答案 1 :(得分:2)
在您的代码中,arr
具有main()
功能(块)范围#。在func()
内,不存在arr
。
如果您需要从arr
访问func()
,则需要将其设为全局。
(#)不要与生命混淆