////main.cpp/////////////////////////////////////////
#include <iostream>
using namespace std;
int main() {
int a[2][2]={1,2,3,4};
int **ptr=&a;
cout << endl;
system("PAUSE");
return 0;
}
编译上述代码时,它给出以下错误
[Error] cannot convert 'int (*)[2][2]' to 'int**' in initialization
通常,不建议使用指针。但是,您可以看一下:
#include <iostream>
int main() {
int a[2][2] = {{1,2},{3,4}};
int *ptr1=a[0];
int *ptr2=&a[0][0];
int **ptr3=&ptr1;
int **ptr4=&ptr2;
std::cout << "the source variable: " << a[0][0] << std::endl;
std::cout << "pointer to array: " << ptr1[0] << ", " << ptr1[1] <<
", " << ptr1[2] << ", " << ptr1[3] << std::endl;
std::cout << "pointer to one element: " << *ptr2 << std::endl;
std::cout << "pointer to pointer: " << **ptr3 << std::endl;
std::cout << "pointer to pointer: " << **ptr4 << std::endl << std::endl;
system("PAUSE");
return 0;
}
指针和指针和指针和阵列可以提供一些很好的解释
注意:通常,不建议使用指针,因为在调试时可能会造成困难,例如内存泄漏或无效的内存访问!结果,发明了智能指针,以防止普通指针的可能后果。您可以看一下std :: shared_ptr。
您要做的是不好的形式,但是您需要的是reinterpret_cast
int **ptr=reinterpret_cast<int **>(a);