C++ 如何声明指向另一个数组元素的指针数组
我有一个数组C++ 如何声明指向另一个数组元素的指针数组,c++,arrays,pointers,C++,Arrays,Pointers,我有一个数组 char选项卡[200] 然后我想创建一个数组,它由指向前面数组元素的指针组成 char** t = new (char*)[LENGTH]; 但我确实明白 C:\Users\Duke\Desktop\PJC3\main.cpp|37|error: array bound forbidden after parenthesized type-id| 我应该如何动态声明它 编辑:指向选项卡数组的相应元素正确吗 char** t = new char*[dlugoscTab];
char选项卡[200]代码>
然后我想创建一个数组,它由指向前面数组元素的指针组成
char** t = new (char*)[LENGTH];
但我确实明白
C:\Users\Duke\Desktop\PJC3\main.cpp|37|error: array bound forbidden after parenthesized type-id|
我应该如何动态声明它
编辑
:指向选项卡
数组的相应元素正确吗
char** t = new char*[dlugoscTab];
for(int i = 0; i < dlugoscTab; i++){
*(t + i*sizeof(char)) = (tab + i*sizeof(char));
}
char**t=new char*[dlugoscTab];
对于(int i=0;i
应该是:
char** t = new char*[LENGTH];
如果希望t
中的每个i
th元素指向tab
中的i
th元素,可以这样做:
for(int i=0; i<LENGTH; i++ )
t[i] = & tab[i];
for(int i=0;i
应该是:
char** t = new char*[LENGTH];
如果希望t
中的每个i
th元素指向tab
中的i
th元素,可以这样做:
for(int i=0; i<LENGTH; i++ )
t[i] = & tab[i];
for(int i=0;i要按您尝试的方式执行,您只需去掉括号:
char** t = new char*[LENGTH];
for (i = 0; i < LENGTH; i++) {
t[0] = &tab[i];
}
或者更好地使用标准容器,如std::array
或std::vector
编辑中的作业不正确:
*(t + i*sizeof(char)) = (tab + i*sizeof(char));
在这种情况下它会起作用,但这仅仅是因为sizeof(char)
是1。您不应该在此处涉及sizeof
。向指针添加1不会将其移动1个字节,而是将其移动到指向其所指类型的下一个对象。您应该执行以下操作:
*(t + i) = (tab + i);
但正如我在上面的示例中所写,这正是更容易理解的:
t[i] = &tab[i];
要按您尝试的方式进行,您只需去掉括号:
char** t = new char*[LENGTH];
for (i = 0; i < LENGTH; i++) {
t[0] = &tab[i];
}
或者更好地使用标准容器,如std::array
或std::vector
编辑中的作业不正确:
*(t + i*sizeof(char)) = (tab + i*sizeof(char));
在这种情况下它会起作用,但这仅仅是因为sizeof(char)
是1。您不应该在此处涉及sizeof
。向指针添加1不会将其移动1个字节,而是将其移动到指向其所指类型的下一个对象。您应该执行以下操作:
*(t + i) = (tab + i);
但正如我在上面的示例中所写,这正是更容易理解的:
t[i] = &tab[i];
正确的语法是:
char (*t)[LENGTH] = new char(*)[LENGTH];
但是用new分配它没有多大意义,因为它只分配一个指针,而不是一个数组。正确的语法是:
char (*t)[LENGTH] = new char(*)[LENGTH];
但是用new分配它没有多大意义,因为它只分配一个指针,而不是一个数组。为什么用括号?你读了错误消息了吗?std::vector t(LENGTH,nullptr);
为什么用括号?你读了错误消息了吗?std::vector t(LENGTH,nullptr)
谢谢!我的编辑怎么样?正确吗?我想指向另一个数组的元素。@RobertKilar我编辑了我的答案-不正确。去掉sizeof(char)
。谢谢!我的编辑怎么样?正确吗?我想指出另一个数组的元素。@RobertKilar我编辑了我的答案-不正确。去掉sizeof(char)
@RobertKilar你不需要添加sizeof(char)
,指针运算会自动影响类型的大小。此外,您所做的事情比需要的要复杂得多。只需使用t[i]=&tab[i]
。这样就清楚了您的意思。@RobertKilar您不需要添加sizeof(char)
,指针运算会自动影响类型的大小。此外,您所做的事情比需要的复杂得多。只需使用t[i]=&tab[i]
。这样就清楚了您的意思。@JSQuareD This声明并动态分配指向长度字符数组的指针,这不是OP想要的。@JSQuareD This声明并动态分配指向长度字符数组的指针,这不是OP想要的。