您的位置:首页 > 其它

\t\t由一个网友的问题想到的(指针作为形参, p++ 和 p + 1的区别 )

2012-12-05 17:17 246 查看
#include <iostream>
using namespace std;
void mm(double* const array, int length)
{
double *p = (double*) malloc(length * sizeof(double));
double *pt = p; //保留初始指针
for (int i = 0; i < length; i++)
{
//① ② 不同时出现 ,比较两者区别 ,两者在赋值的时候没有区别,都能给期望的内存空间赋值,但是①中p的值不变,只是取p后第几个地址, ②中p的值变了 ,p移动了位置,也就不再指向刚开始申请的那段内存
*(p + i) = *(array + i); // ①
*(p ++ ) = *(array + i); //②

}
free(pt);//如果用②赋值,那么必须用pt释放,因为p已经不再是当年的p了 ,而pt还是pt ,仍然让然指向malloc申请的内存
}

int main()
{
double b[] = {1.2, 5.6, 6.9};
int a = sizeof(b) / sizeof(double);
mm(b, a);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: