我是否可以从任何功能访问指针而无需从main()
向每个功能发送信息?我试过寻找信息但找不到答案。
答案 0 :(得分:2)
你试过吗?
答案 1 :(得分:0)
如果指针作为参数传递给函数,或者它被声明为全局,那么是。
答案 2 :(得分:0)
是的,你可以,因为变量的地址 - 它是她自己在内存空间中的唯一标识符,就像大城市中的住宅地址一样。例如,出于调试原因,它可能非常有用(你唯一应该确定的 - 这个变量的实时范围,因为当变量离开她的范围时 - 指向这个地址的指针不再有效)。
答案 3 :(得分:0)
正如其他人所说:有充分的理由不使用很多全局变量("代码的位置"很有用),但在某些情况下,小心使用全局变量是合理的。一个例子可能会有所帮助:
// A slightly contrived example to show how and when you
// might use a global variable in a C program.
#include <stdio.h>
#include <stdlib.h>
// The following are compile-time constants, and considered
// good coding practice
#define DEBUG_WARN 1
#define DEBUG_ERROR 2
// The following is a global, accessible from any function,
// and should be used cautiously. Note the convention (not
// universally adopted) of prefixing its name with "g_"
int g_debug_threshold = 0;
// debug_print() uses the global variable to
// decide whether or not to print a debug message.
void debug_print(char *msg, int level) {
if (level >= g_debug_threshold) {
fprintf(stderr, "%s\n", msg);
}
}
void foo() {
debug_print("hi mom", DEBUG_WARN);
}
int main(int ac, char **av) {
// Here we set the debug threshold at runtime
if (ac > 1) {
g_debug_threshold = atoi(av[1]);
}
foo();
}