指针如何与数组一起工作?我发现语法有点神秘,例如(16x1):指针(指针)和新/ malloc矢量(在矢量内)C++
int* a = new int[16];
a[16] = 33;
cout << a[16] << endl;
上面的例子有效。通常*需要在写入/读取值的指针前面,而不是在向量中?
的情况是多维数组,我发现下面的方式来创建(16×3)更加复杂:
int** a = (int**)new int[16];
for (int i = 0; i < 16; i++)
{
a[i] = (int*)new int[3];
}
a[15][2] = 4;
cout << a[15][2] << endl;
此外,上述作品,但很难掌握语法如何与指针。该语法也适用于malloc。使用malloc有一个选项“memset”,它自动初始化多维数组(放入for循环)。新的有类似的选择吗?
你分配一个16“int”元素的“数组”,然后你写入元素号17?这是超出界限,并会导致*未定义的行为*。 –
“上面的例子有效” - ':s/works/invoked-undefined-behavior/g' – WhozCraig
我不熟悉指针数组和'malloc',但不会出现'a [16]'越界在第一个例子中? – kim366