问几个 c++的 小问题
1.void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问 这段代码 有什么错误?
别人的 解释是 “函数参数都是局部变量,改变这些参数的值不会影响调用函数中的值”
我不理解 我 传给 GetMemory(str); str指针 传入后 p就是 str 那我给str开辟空间 然后 在Test函数 输出 这为什么不对呢?
2.我知道 void test(int&);
这个函数的参数 表示 应用传值 省去了把对象转换为指针再传入的 麻烦
但是
const CCPoint& CCNode::getPosition()
{
return m_tPosition;
}
这是 我看到的一些函数 这个函数的 返回值 const CCPoint& 是什么意思 如果是对象的话直接返回不就行了 干嘛 还要 加‘&’ 而且前面还有个 const他是修饰 这个 CCPoint&的还是 修饰函数的?修饰函数的话不是应该放在后面吗?
3. delete 和 delete[] 这个 问题 我 都凋零了
delete 删除指针 delete[] 删除数组
3-1 我 如果 自定义一个类 这个类内部封装对 数组的操作 那我将这个类new出来(他的数组 是类的数据成员 new的时候也分配空间) 那我 释放的时候 该怎么放?delete 还是 delete[]?
3-2 那如果是 delete[]是删除数组 对吧 那这个怎么看也是删除1维数组的 那2维的怎么释放
难道delete[][]?
3-3 vector 这东西是什么 ?数组?链表?网上说是容器 ,但是数组也是容器。。反正 我感觉 他就是个 数组 那他该如何 释放 delete 还是 delete[] (前提是 都是用new 开辟过内存的)
继续纠结、、
[解决办法]
1.关于第一题,请详细看http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183962.html,里面写得很详细,我原来也不懂,现在懂了,总的来说:指针本身也是传值方式。