高手指教一下关于指针的问题

jiangs221 2008-06-17 11:24:48
用C++写一个小程序

创建一个指针,使用calloc或malloc,创建一个数组,将这个数组拷贝到另一个数组中,并用另一个数组找到这个新数组并打印.
...全文
160 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangs221 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 richbirdandy 的回复:]
6天确实不能成什么样
[/Quote]
只有继续努力啊~!
jiangs221 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 MagiSu 的回复:]
引用 3 楼 jiangs221 的回复:
引用 1 楼 arong1234 的回复:
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业

如果天生就会那真的就不用学了.因为不会所以才请教,我虽然是为了完成作业,但我也想弄明白到底是怎么回事,最起码会用,如果你认为你是高手,为什么不指导一下呢,说这么多废话有什么用,虽然是作业,可能今天我不明白,但不代表我明天也不明白啊.我也是在一点点学习啊.虽然到…
[/Quote]
谢谢.方法我也基本弄明白了.主要还是练的少.我会加强练习的.
jiangs221 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
引用 3 楼 jiangs221 的回复:
引用 1 楼 arong1234 的回复:
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业

如果天生就会那真的就不用学了.因为不会所以才请教,我虽然是为了完成作业,但我也想弄明白到底是怎么回事,最起码会用,如果你认为你是高手,为什么不指导一下呢,说这么多废话有什么用,虽然是作业,可能今天我不明白,但不代表我明天也不明白啊.我也是在一点点学习啊.虽然到…
[/Quote]

谢谢这位大哥
kkndciapp 2008-06-18
  • 打赏
  • 举报
回复
接楼上黄埔大哥的,如果用memcpy的话:
memcpy(q,p,sizeof(int)*100)
richbirdandy 2008-06-18
  • 打赏
  • 举报
回复
6天确实不能成什么样
MagiSu 2008-06-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangs221 的回复:]
引用 1 楼 arong1234 的回复:
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业

如果天生就会那真的就不用学了.因为不会所以才请教,我虽然是为了完成作业,但我也想弄明白到底是怎么回事,最起码会用,如果你认为你是高手,为什么不指导一下呢,说这么多废话有什么用,虽然是作业,可能今天我不明白,但不代表我明天也不明白啊.我也是在一点点学习啊.虽然到目前为止只学了六天,这六天你认为…
[/Quote]

如果你一开始就能说明你的态度大家会对你友善很多。我在CSDN混了8年多,注册ID也有5年了。经我观察CSDN的人最讨厌直接要作业答案的人了。不过说实话,只学了6天就想要一下搞指针,操之过急未必好。建议还是好好打好基础,先把语言里面基本的东西搞清楚再说,除非你有其他语言的基础。
baihacker给的是new的。人家要的是malloc的。


题目:
创建一个指针,使用calloc或malloc,创建一个数组,将这个数组拷贝到另一个数组中,并用另一个数组找到这个新数组并打印.

首先搞清calloc和malloc的区别。calloc两个参数,第一个指明元素个数,第二个指明元素大小,最后换算到字节数,并且将数据清零。malloc只有一个,指明需要的内存大小按照字节数计算。

int* p=static_cast<int*>(malloc(100*sizeof(int))); // 这里申请内存。并且转换成int*格式,因为malloc返回的是void*格式。同时因为不知道int的字节数(编译器决定),所以用sizeof算符

for(int i=0;i<100;i++) // 用0到99初始化数组
p[i]=i;

要拷贝数组有很多种方法,按照你的水平,直接用for拷贝。如果熟练了可以用memcpy或者std::copy进行。

int* q=static_cast<int*>(calloc(100,sizeof(int))); // calloc只是将计算字节数交给程序,并且多一个你存清零。

for(int i=0;i<100;i++)
q[i]=p[i]; // 拷贝数组

打印也是for()一下就可以。当然你要熟练stl可以用copy到cout上去。
kkndciapp 2008-06-18
  • 打赏
  • 举报
回复
飞雪大哥的写得非常规范了
baihacker 2008-06-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jiangs221 的回复:]
引用 1 楼 arong1234 的回复:
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业

如果天生就会那真的就不用学了.因为不会所以才请教,我虽然是为了完成作业,但我也想弄明白到底是怎么回事,最起码会用,如果你认为你是高手,为什么不指导一下呢,说这么多废话有什么用,虽然是作业,可能今天我不明白,但不代表我明天也不明白啊.我也是在一点点学习啊.虽然到目前为止只学了六天,这六天你认…
[/Quote]

确实看到直接要代码的比较恼火...
你自己看看我的吧,如果不是你在3楼的回复,我也不愿意写的.
baihacker 2008-06-18
  • 打赏
  • 举报
回复

//你题目有一些问题,把数组和指针没有区别开来,下面的程序也没有区别,但是你要记住,千万不要把数组和指针搞混了.

#include <iostream>
using namespace std;

int* AllocArray(int n)
{
return new int[n];
}

void FreeArray(int* const arr)
{
delete[] arr;
}

void ShowArray(const int* arr, int n)
{
for (int i = 0; i < n; ++i)
cout << arr[i] << '\t';
cout << endl;
}

void CopyArray(int* dest, const int* src, int n)
{
while (n--) *dest++=*src++;//用内存拷贝函数也行
}
int main(int argc, char* argv[])
{
int arr1[5] ={1,2,3,4,5};
const int size = sizeof(arr1)/sizeof(arr1[0]);
int* arr2 = AllocArray(size);
CopyArray(arr2, arr1, size);
ShowArray(arr2, size);
FreeArray(arr2);
return 0;
}




chwhaiwei 2008-06-18
  • 打赏
  • 举报
回复
支持飞雪,建议用new delete操作内存
路过
bendise 2008-06-18
  • 打赏
  • 举报
回复
int main()
{
const int length = 5;
int* alloc = new int[length];
int* malloc = new int[length];

alloc[0] = 1;
alloc[1] = 2;
alloc[2] = 3;
alloc[3] = 4;
alloc[4] = 5;

for(int i = 0; i < length; ++i){
malloc[i] = alloc[i];
std::cout << *malloc+i << " ";
}

getchar();
}
jiangs221 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业
[/Quote]
如果天生就会那真的就不用学了.因为不会所以才请教,我虽然是为了完成作业,但我也想弄明白到底是怎么回事,最起码会用,如果你认为你是高手,为什么不指导一下呢,说这么多废话有什么用,虽然是作业,可能今天我不明白,但不代表我明天也不明白啊.我也是在一点点学习啊.虽然到目前为止只学了六天,这六天你认为你会学成什么样呢.可能会比我学的好,那又怎么着呢,也许还不如我呢.别以为自己有多了不起,每个人都是在学习中进步的..别把自己看的太高,小心摔下来把地面砸坏了。
iwong 2008-06-17
  • 打赏
  • 举报
回复
作业帖真是无处不在啊。
arong1234 2008-06-17
  • 打赏
  • 举报
回复
这么简单的题目还做不了C++也别学了,如果是仅仅为完成作业,估计没有多少人愿意帮你做作业

64,639

社区成员

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

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