问几个一直感到困惑的问题
1。
int a[10][10];
int** p;
p=a;
编译器报错。我的目的是可以用p[i][j]这样的方式来访问a里的元素,不知可不可能。
希望详细解释。
2。
关于include
个人理解include在编译的时候会把整个包含的文件替换在相应的include语句的位置,不知这样理解是否正确。
如果正确,那么如果我在一个头文件里包含了一个全局变量的定义,就相当于在所有包含该头文件的文件中都定义了这个同名变量。
在gcc的环境下,我试着在两个文件里定义一个同名的全局变量。如果在定义时(比如int i=0) 没有对其进行初始化,或者只对其中一个进行初始化,gcc可以编译,而且正常运行。如果对两个都在定义时初始化,则在link的时候报错。
假设我又创建了一个头文件,并在两个源文件中都包含了这个头文件,那么如果我在头文件里定义那个全局变量,而不在两个源文件中定义。如果我在定义时初始化,link时报错。如果不初始化,通过。
不知道什么原因。望达人解惑