我创建了一个2D数组,并创建了一个指向第一个元素的指针 . 我正在尝试使用指针打印2D数组,但我收到以下错误 . 不知道我在这里做错了什么 .
source_file.cpp:在函数'int main()'中:source_file.cpp:15:27:错误:无效类型'char [int]'对于数组下标cout << pname [x] [y] << endl;
^
#include <iostream>
#include <string>
using namespace std;
int main()
{
char name[2][2] = {'E', 'f', 'g', 'r'};
char* pname = &name[0][0];
for (int x = 0; x<2; x++)
{
for (int y = 0; y<2; y++)
{
cout << pname[x][y] << endl;
}
}
}
4 回答
做这个:
它将输出:
E
f
g
r
,中间有换行符查找memcopy here
pname
是指向char
的指针 . 所以pname[x]
是char
. 因此pname[x][y]
是尝试从char中获取第y个项目,就像您键入char t; t[10];
一样 .假设您想要通过引用传递指针,则需要使用
char pname[][10]
的参数 .如果您只想线性输出项目,请使用当前
pname
并沿for(int c = 0; c < 4; c++) cout << pname[c] << endl;
步进 .我会使用类似的东西:
要么:
这里发生的是,
char*
类型从C风格的二维数组name
中删除数组大小信息 . 因为pname
只是一个char*
,它的用户无法知道它所指向的东西的大小和形状 .