比方说,我有这样的功能:如何在C中保存一个读入函数的变量?
void read() {
int num;
scanf("%d", &num);
}
,我想使用num变量在这样的另一个功能:
void func() {
for (i = 0; i < num; i++)
printf("%d ", i);
}
但是在编译的时候,它说的变量未初始化。我知道它很可能需要指针,但我无法得到它的一个窍门。
比方说,我有这样的功能:如何在C中保存一个读入函数的变量?
void read() {
int num;
scanf("%d", &num);
}
,我想使用num变量在这样的另一个功能:
void func() {
for (i = 0; i < num; i++)
printf("%d ", i);
}
但是在编译的时候,它说的变量未初始化。我知道它很可能需要指针,但我无法得到它的一个窍门。
有两种方法可以去这样做:
第一种方法需要你的返回类型更改为int
:
int read() {
int num;
scanf("%d", &num);
return num;
}
void func() {
int num = read();
for (i = 0; i < num; i++)
printf("%d ", i);
}
第二种方法需要你采取int*
指针:
void read(int* p) {
scanf("%d", p);
}
void func() {
int num;
read(&num);
for (i = 0; i < num; i++)
printf("%d ", i);
}
可以使变量全球功能内:
void func() {
int i;
for(i=0;i<num;i++)
printf("%d ", i);
}
这可能不是最具扩展性的方法。 – doctorlove 2014-12-04 15:29:51
你是对的。我想另一种方式。 – 2014-12-04 15:32:12
避免使用'static'和'thread_local'数据;在可能的情况下计划重新使用和重入并发。 – Deduplicator 2014-12-04 15:34:03
你并不总是需要指针 - 你可以简单地返回值然后使用它。
int read() {
int num;
scanf("%d", &num);
return num;
}
您现在可以存储函数返回的值以备将来使用,例如,
void func() {
int num = read();
for (i = 0; i < num; i++)
printf("%d ", i);
}
我应该提到read()函数也有一些{printf},所以如果我运行read(#)它将会填满无用的打印。 – 2014-12-04 15:45:26
也许打印应该是可配置的 - 具有“读取”功能也会写东西不直观,因为它不止一件事。你可以尝试以不同的方式雕刻它。 – doctorlove 2014-12-04 15:50:17
您func
应该是,
void func(int num) {
for (i = 0; i < num; i++)
printf("%d ", i);
}
而且你还需要传递值一样,
void read() {
int num;
scanf("%d", &num);
func(num);
}
我应该提到read()函数也有一些{printf}的,所以如果我运行read(#)它会填满无用的打印。 – 2014-12-04 15:44:52
还有第三个办法:调用任何需要从你的函数的数据。尽管这并没有真正的规模。 – Deduplicator 2014-12-04 15:32:21
我应该提到read()函数也有一些{printf}的,所以如果我运行read(#)它将会填满无用的打印。 – 2014-12-04 15:44:35
@AntiDeeagle'read()'是你的功能,所以完全取决于你打印或不打印任何你喜欢的东西。如果你需要一个没有'printf'的版本,可以创建一个没有'printf'的版本,并用'printf'来调用它。 – dasblinkenlight 2014-12-04 15:49:03