动态数组问题

Oracle_lp 2013-12-03 08:35:19
#include <iostream>
using namespace std;
void sorted(int * ,int *);

void main()
{
int n;
cout<<" input N :"<<endl;
cin>>n;
int *number = new int[n];
sorted(number , &n);
}

void sorted(int *temp , int *m)
{
int swap;
for(int i=0 ; i <= *m ; i++)
{
if(*temp[i] <= *temp[i+1]);
{
swap = *temp[i+1];
*temp[i+1] = *temp[i];
*temp[i] = swap;
}
}
cout<<"the sorted number :"<<endl;
for(int j=0 ; j < *m ; j++)
{
cout<<*temp[j]<<" ";
}
cout<<endl;


红色的地方一定要用指针的指针麽??? 谢谢!
}
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Todd_Pointer 2013-12-04
  • 打赏
  • 举报
回复
既然用vector就用彻底嘛 把void sorted(int *number, int m)改成void sorted(std::vector<int>& numbers) 这样还有语言上的好处:到底是调用方delete还是被调用言delete? 到底delete还是delete[]? 从C++的角度,这也符合 RAII idiom。 一般情况下,生活会更美好一点点 否则,你需要调用时改为 sorted(array.data(), n);
引用 5 楼 u012557474 的回复:
[quote=引用 4 楼 u012908616 的回复:] 那是个指针,一般不能算作指针的指针。 如楼上指出的,第二个参数不必是指针,当然楼主没问这个事。 在C语言中,一般数组参数必须用指针传递;C++中基本也是这个路子,但更建议不使用数组参数,而是改为std::vector或std::array。
#include <iostream> #include <vector> using namespace std; void sorted(int *, int); void main() { int n; cout<<" input N :"<<endl; cin>>n; vector<int> array(n); sorted(array , n); } void sorted(int *number, int m) { int temp; for(int i=0 ; i<m ; i++) { if(*(number+i) <= *(number+i+1)) { temp = *(number+i); *(number+i) = *(number+i+1); *(number+i) = temp; } } cout<<"the sorted number :"<<endl; for(int j=0 ; j<m ; j++) { cout<<*(number+i)<<" "; } cout<<endl; 提示错误vector<int,class std::allocator<int> >' to 'int *' 如何修正呢!!![/quote]
Oracle_lp 2013-12-04
  • 打赏
  • 举报
回复
引用 4 楼 u012908616 的回复:
那是个指针,一般不能算作指针的指针。 如楼上指出的,第二个参数不必是指针,当然楼主没问这个事。 在C语言中,一般数组参数必须用指针传递;C++中基本也是这个路子,但更建议不使用数组参数,而是改为std::vector或std::array。
#include <iostream> #include <vector> using namespace std; void sorted(int *, int); void main() { int n; cout<<" input N :"<<endl; cin>>n; vector<int> array(n); sorted(array , n); } void sorted(int *number, int m) { int temp; for(int i=0 ; i<m ; i++) { if(*(number+i) <= *(number+i+1)) { temp = *(number+i); *(number+i) = *(number+i+1); *(number+i) = temp; } } cout<<"the sorted number :"<<endl; for(int j=0 ; j<m ; j++) { cout<<*(number+i)<<" "; } cout<<endl; 提示错误vector<int,class std::allocator<int> >' to 'int *' 如何修正呢!!!
Todd_Pointer 2013-12-03
  • 打赏
  • 举报
回复
那是个指针,一般不能算作指针的指针。 如楼上指出的,第二个参数不必是指针,当然楼主没问这个事。 在C语言中,一般数组参数必须用指针传递;C++中基本也是这个路子,但更建议不使用数组参数,而是改为std::vector或std::array。
derekrose 2013-12-03
  • 打赏
  • 举报
回复
答案:看需求
图灵狗 2013-12-03
  • 打赏
  • 举报
回复
传入变量地址以便于修改其内容。
引用 楼主 u012557474 的回复:
#include <iostream> using namespace std; void sorted(int * ,int *); void main() { int n; cout<<" input N :"<<endl; cin>>n; int *number = new int[n]; sorted(number , &n); } void sorted(int *temp , int *m) { int swap; for(int i=0 ; i <= *m ; i++) { if(*temp[i] <= *temp[i+1]); { swap = *temp[i+1]; *temp[i+1] = *temp[i]; *temp[i] = swap; } } cout<<"the sorted number :"<<endl; for(int j=0 ; j < *m ; j++) { cout<<*temp[j]<<" "; } cout<<endl; 红色的地方一定要用指针的指针麽??? 谢谢! }
xlfjxys 2013-12-03
  • 打赏
  • 举报
回复
int*就可以了,还有第二个参数也没必要用指针int就行了

64,650

社区成员

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

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