void funcA(int**a,int**b) { static int n = 100; static int m = 1100; *a =&n; *b = &m; } #define null 0 int main() { int** a=null;//将指针初始化为0是个好习惯 int** b=null; funcA(a, b); printf("%p\n%p\n", *a, *b); }//这段代码没有打印出任何结果
时间: 2024-01-17 19:37:27 浏览: 131
C++类对象关于虚函数表详解
根据你提供的代码,我注意到你在main函数中将指针a和b初始化为null,然后调用funcA函数将n和m的地址分别赋给*a和*b。然后你使用printf函数打印指针a和b的地址。
然而,这段代码没有打印出任何结果的原因是,你将指针a和b初始化为null,这意味着它们指向空地址,而不是指向任何有效的内存空间。当你将n和m的地址赋给*a和*b时,实际上是将n和m的地址赋给了空指针,这是不正确的操作。
要解决这个问题,你可以修改main函数中的指针初始化部分,为a和b分配合适的内存空间。例如,你可以使用malloc函数动态分配内存,如下所示:
```c
int* n = malloc(sizeof(int));
int* m = malloc(sizeof(int));
*a = n;
*b = m;
```
这样就为a和b分配了内存,并使它们指向有效的地址。然后再调用funcA函数进行赋值操作。
请记得在程序结束前使用free函数释放动态分配的内存,以避免内存泄漏。
希望这可以解决你的问题!如果你有任何其他问题,请随时提问。
阅读全文