char*とchar*&の違い

1767 ワード

どちらもアドレスを関数に伝達し,伝達されたポインタが指す値を修正することができる.異なる点*&は、ポインタの指向を変更することもできる.次のプログラムテスト*&針の指向性も変更できます
#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*&の違い