-2

なぜこれはOKではないのですか?

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


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

私の意図は、関数へのポインタを送信することです。これは、それ(ポインタ)を変更しますが、それが指している文字は変更しません。

4

2 に答える 2

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 内のポインターを変更することに注意してください。

于 2012-09-10T13:15:55.157 に答える
0

全然OKです。実際、それは魅力のように機能します。

#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)
于 2012-09-10T11:48:57.577 に答える