C++ Void指针代替int类型的指针

C++ Void指针代替int类型的指针,c++,arrays,pointers,void,C++,Arrays,Pointers,Void,我是C/C++的初学者,我正在努力学习指针 下面是我创建指针数组的代码,指针数组中的每个元素都指向数据数组中的元素: #include <iostream> using namespace std; //Pointers reference article //https://www.programiz.com/cpp-programming/pointers-arrays /* Array of pointers */ const int MAX = 5; int main()

我是C/C++的初学者,我正在努力学习指针

下面是我创建指针数组的代码,指针数组中的每个元素都指向数据数组中的元素:

#include <iostream>
using namespace std;

//Pointers reference article
//https://www.programiz.com/cpp-programming/pointers-arrays

/* Array of pointers */
const int MAX = 5;
int main(){
    int arr[MAX] = {1,2,3,4,5};
    int* ptr[MAX];

    cout << "Create the handle of each element in data array to the ptr array: " << endl;
    for (int i=0; i<sizeof(arr)/sizeof(arr[0]);i++)
    {
        ptr[i] = &arr[i];
        cout<<"ptr["<<i<<"] = " << ptr[i] << endl;
    }

    cout << "Display the contents of array using 1:1 ptr array:"<< endl;
    for (int i=0; i<sizeof(arr)/sizeof(arr[0]);i++)
        cout<<"arr["<<i<<"] = " << *ptr[i] << endl;

    system ("pause");
    return 0;
}
#包括
使用名称空间std;
//指针参考文章
//https://www.programiz.com/cpp-programming/pointers-arrays
/*指针数组*/
常数int MAX=5;
int main(){
int-arr[MAX]={1,2,3,4,5};
int*ptr[MAX];

你可以问自己一个问题吗?空虚是什么意思

所以你有一个空指针-这意味着它指向空

它可以是任何东西——任何整数、结构、对象、浮点

了解情况

然后编译器试图去引用它-所以它举起手说-我没有任何线索


不管是哪种情况,最好还是避免使用虚空指针。你需要问自己一个问题:虚空是什么意思

int* ptr[MAX];
所以你有一个空指针-这意味着它指向空

它可以是任何东西——任何整数、结构、对象、浮点

了解情况

然后编译器试图去引用它-所以它举起手说-我没有任何线索

无论是哪种情况,都可以避免使用空指针

int* ptr[MAX];
ptr
是指向
int
的指针数组

当你换到

void* ptr[MAX];
然后,
ptr
是指向
void
的指针数组。它不会在第一个
cout

cout<<"ptr["<<i<<"] = " << ptr[i] << endl;  // ok - printing the address
cout
ptr
是指向
int
的指针数组

当你换到

void* ptr[MAX];
然后,
ptr
是指向
void
的指针数组。它不会在第一个
cout

cout<<"ptr["<<i<<"] = " << ptr[i] << endl;  // ok - printing the address

<代码> >你取消代码>空格*>代码>,你得到的是 Value>代码>。我不太清楚你会做什么。没有语言C/C++。一个不同的语言C和C++。这个代码显然不是C。任何内容,无论类型如何,因此它指向的对象的类型是未知的。取消引用指针(如
*ptr[i]
中,其中
ptr[i]
是指针)它的点的类型必须知道。@ DoDaD2000:你不能取消<代码>空白>代码>!奥拉夫:这是我的观点。如果你引用<代码>空白>代码>,你就得到了<代码>空洞。我不太清楚你会做什么。没有语言C/C++。一个不同的语言C和C++。这个代码是清楚的。不是C。
void
指针的全部意义在于它可以指向(几乎)任何东西,而不考虑类型,因此它指向的类型是未知的。要取消引用指针(如
*ptr[i]
,其中
ptr[i]
是指针)它指向的类型必须是已知的。@Dolda2000:您不能取消引用
void*
!@Olaf:这有点像我的观点。