首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问几个 c++的 小疑点

2013-03-01 
问几个 c++的 小问题1.void GetMemory(char *p){  p (char *)malloc(100)}void Test(void) {  char *st

问几个 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,里面写得很详细,我原来也不懂,现在懂了,总的来说:指针本身也是传值方式。

热点排行