将'const char *'参数发送到接收'const char *&'的函数

时间:2012-09-10 09:40:27

标签: c++ pointers pass-by-reference

为什么这不行?

void func(const char* &pointer){...}


//in main
const char* mainPointer = "a word";
func(mainPointer);

我的目的是发送一个指向函数的指针,该函数改变它(指针)但不改变它指向的字符。

2 个答案:

答案 0 :(得分:1)

以下代码(MS Visual C ++ 2010)显示它完全可行且有效。输出是:“世界!”

#include "stdafx.h"
#include <iostream>
using namespace std;


void func(const char*& ptr) 
{
    ptr += 6;
}


int _tmain(int argc, _TCHAR* argv[])
{
    const char* Ptr = "Hello World!";
    func(Ptr);
    cout << Ptr << endl;
    return 0;
}

请注意,与Null Voids代码相比,我们在这里修改了func中的指针。

答案 1 :(得分:0)

完全没问题。事实上,它就像一个魅力。

#include <iostream>
using namespace std ;



void func(const char* &pointer)
{
  cout<<" \n "<<pointer<<"\n";
}


int main()
{
    const char* mainPointer = "a word";
    func(mainPointer);

    cout<<" \nPress any key to continue\n";
    cin.ignore();
    cin.get();

return 0;
}

节目输出:

 a word

Press any key to continue

编译输出:

Compiling...
this.cpp
Linking...

this.exe - 0 error(s), 0 warning(s)