char*とchar*&の違い
1767 ワード
どちらもアドレスを関数に伝達し,伝達されたポインタが指す値を修正することができる.異なる点
実行結果から、
c++char*char*&の違い
*&
は、ポインタの指向を変更することもできる.次のプログラムテスト*&
針の指向性も変更できます#include
struct point{
//int x;
//int y;
};
void changeNum1(point *&num_ptr){
num_ptr = new point;
std::cout< new num_ptr` address"<x = 4;
}
void changeNum2(point *num_ptr){
num_ptr = new point;
std::cout< new num_ptr` address"<x = 4;
}
void test1(){
point *num_ptr=new point;
std::cout< num_ptr` address"<x = 10;
changeNum1(num_ptr);
std::cout<out of changeNum1: num_ptr` address"<x<<:endl void="" test2="" point="" std::cout=""> num_ptr` address"<x=10;
changeNum2(num_ptr);
std::cout<out of changeNum2: num_ptr` address"<x<<:endl int="" main="" argc="" char="" argv="" test1="" std::cout="" test2=""/>
実行結果
test1 -> num_ptr` address0x1cdac20
test1 changeNum1 -> new num_ptr` address0x1cdb050
test1 ->out of changeNum1: num_ptr` address0x1cdb050
---------------------
test2 -> num_ptr` address0x1cdb070
test2 changeNum2 -> new num_ptr` address0x1cdb090
test2 ->out of changeNum2: num_ptr` address0x1cdb070
実行結果から、
changeNum1()
におけるポインタnum_ptr
の変更は、関数外のnum_ptr
の指向を変更することはできないことがわかる.しかし、point*&
を使用して入力され、num_ptr
は、関数外ポインタの指向性を変更することができる.リファレンスアドレス
c++char*char*&の違い