关于动态数组

ifineedhelp 2006-12-18 02:36:03
#include <iostream.h>
void install(int **p[][6]);
int main()
{
int **p;
p = new int*[2];
for(int a = 0;a < 2;a++)
{
p[a] = new int[6];
}
install(p);
for(int b = 0;b < 2;b++)
{
delete [][] *p;
}
delete [] p;
return 0;
}
void install(int **p[][6])
{
for(int c = 0;c < 2;c++)
{
for(int a = 0;a < 6;a++)
{
**p[c][a] = a+1;
}
}
for(int d = 0;d < 2;d++)
{
for(int b = 0;b < 6;b++)
{
cout<<**p[d][b]<<endl;
}
}
F:\debug\shiyan.cpp(11) : error C2664: 'install' : cannot convert parameter 1 from 'int ** ' to 'int **[][6] '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\debug\shiyan.cpp(14) : error C2059: syntax error : '['
F:\debug\shiyan.cpp(36) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

shiyan.exe - 3 error(s), 0 warning(s)
报错信息真不知道怎么改了。。。
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ifineedhelp 2006-12-19
  • 打赏
  • 举报
回复
谢谢各位前辈了
nsdcomputer 2006-12-18
  • 打赏
  • 举报
回复
注意指针的用法:
int* p = new int[3];
for(int i=0; i<3; i++)
{
p[i]=i; //这时指针有点像数组;
}
其实指针和数组的区别在于;指针的首地址是变量,而数组的首地址是常量;
[]的作用是:根据首地址求出实际地址(首地+偏移量),[]中的数值就是偏移量;
如p[2],意思是以指针变量的值(一个地址)加上两个偏移量作为地址的变量
nsdcomputer 2006-12-18
  • 打赏
  • 举报
回复
/*你的代码:
#include <iostream.h>
void install(int **p[][6]);//这里的p 相当于 int**** 型的
int main()
{
int **p;
p = new int*[2];
for(int a = 0;a < 2;a++)
{
p[a] = new int[6];
}
install(p);
for(int b = 0;b < 2;b++)
{
delete [][] *p; //用delete删除指针时用delete[];
}
delete [] p;
return 0;
}
void install(int **p[][6])
{
for(int c = 0;c < 2;c++)
{
for(int a = 0;a < 6;a++)
{
**p[c][a] = a+1;
}
}
for(int d = 0;d < 2;d++)
{
for(int b = 0;b < 6;b++)
{
cout<<**p[d][b]<<endl;
}
}
}
*/
//修改后:

#include <iostream.h>
void install(int **p);
int main()
{
int **p;
p = new int*[2];
for(int a = 0;a < 2;a++)
{
p[a] = new int[6];
}
install(p);
for(int b = 0;b < 2;b++)
{
delete[] p[b];
}
delete[] p;
return 0;
}
void install(int** p)
{
for(int c = 0;c < 2;c++)
{
for(int a = 0;a < 6;a++)
{
p[c][a] = a+1;
}
}
for(int d = 0;d < 2;d++)
{
for(int b = 0;b < 6;b++)
{
cout<<p[d][b]<<endl;
}
}
}
ifineedhelp 2006-12-18
  • 打赏
  • 举报
回复
谢谢解答...以后我写代码会注意点..!!:)
OOPhaisky 2006-12-18
  • 打赏
  • 举报
回复
delete [][] *p;
-------------------------------------------------------------------------------------
这是什么语法?
在C++中只有delete和delete[],没有delete [][]。
fosjos 2006-12-18
  • 打赏
  • 举报
回复
楼上理解正确

delete [][] *p; -> delete [] *p;
realrukawa 2006-12-18
  • 打赏
  • 举报
回复
如果是我理解错了,难道是要个四维数组?
realrukawa 2006-12-18
  • 打赏
  • 举报
回复
应该是想用双指针作二维数组吧?给个注释好歹也容易看懂一点吧?
void install(int **p);
类似于这种的**p[d][b]改成p[d][b]
ifineedhelp 2006-12-18
  • 打赏
  • 举报
回复
帮我改改特别是 参数的问题。。。搞不懂
lin_style 2006-12-18
  • 打赏
  • 举报
回复
cannot convert parameter 1 from 'int ** ' to 'int **[][6] '
类型错误。

syntax error : '['符号错误

unexpected end of file found 少了个}号吧

64,660

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧