程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言、指針的指針和野指針的問題

C語言、指針的指針和野指針的問題

編輯:關於C語言

int _tmain(int argc, _TCHAR* argv[])

   int * p = (int *) malloc(sizeof(int));
   //*p = 10;
   flee(p);
   printf("%d",*p);
   //釋放p
   free(p);
   printf("----");
   int * i = (int *) malloc(sizeof(int));
   flee2(&i);
   //釋放i
   printf("%d",*i);
   free(i);
}
//入參為指針,仍為值傳遞,即副本。只有引用傳遞是傳遞p本身。
void flee(int *q)
{
  //副本修改的是指針所指變量的值,而不是指針本身。
  *q = 20;
  //出棧時副本被自動銷毀,而外面的P所指變量的值被改了,但指針地址實際上未改變。
}

void flee2(int **q)
{
  //int i = 5;
  ////副本指向了一個新的位置,所以真正地修改了一個指針地址。但產生的一個問題是,原始定義的i產生了野指針。
  //*q = &i;
  //i =3;
if(q != NULL && *q != NULL)
{
 *(*q) = 5;
}
}

 

摘自 功夫 熊貓

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved