c++指標 初識

來源:互聯網
上載者:User

從JAVA轉C++,開始對指標的理解,講講自己對指標的理解,指標也是一個變數類型而已,存的就是是某個對象或變數的地址,還是先上代碼吧:代碼最直接了:

#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i = 100 ;//賦值方法一int *p =&i;//可以這樣定義指標並且賦值//賦值方法二int *pt; pt = &i;
// *pt = &i 這樣定義不行 ,賦值方法一那樣定義就行 //下面是測試結果printf("i: %d\n",i);/*//就是指向的某個變數的記憶體位址 可以看出 p = &i 跟上面的賦值賦值有點不同,開始我 一直 以為賦值方法是*p=&i;那麼*p=&i應該也可以的; 也可能我理解能力差的緣故,*/printf("p: %d\n",p);printf("&i: %d\n",&i);printf("*p: %d\n",*p);//就是該記憶體位址的內容或值printf("pt:%d \n",pt);printf("*pt:%d \n",*pt);/*指標的記憶體位址,說明指標也有自己的記憶體位址,指標就是一個類型*/printf("&pt:%d \n",&pt);printf("&p:%d\n ",&p);return 0;

  上面就是我個人對指標的理解。

 使用指標:

int * myPointer = new int ;

在此情況下,指標指向一個整數值的地址。為訪問這個值,需要對這個指標解除引用。如下代碼

*myPointer = 8;

  


int *myPoniter = new int ;//動態分配記憶體printf("&myPoniter:%d\n ",&myPoniter);printf("*myPoniter:%d\n ",*myPoniter);*myPoniter =8;printf("&myPoniter:%d\n ",&myPoniter);printf("*myPoniter 8:%d\n ",*myPoniter);delete myPoniter;//釋放記憶體

  

這裡並沒有改變指標的記憶體位址,指改變該記憶體位址的內容;

 下面代碼是對數組指標的理解;

const size_t  size = 5;int int_arr[size] = {0,1,2,3,4};int *b = int_arr;int *e = int_arr+size;printf("b:%d\n",b);printf("b++:%d\n",++b);printf("int_arr0:%d\n",&int_arr[0]);//b = &&int_arr[0]printf("int_arr1:%d\n",&int_arr[1]);//++b=&int_arr[1]printf("e:%d\n",e);for (int *pbegin = int_arr,*end =int_arr+ size;pbegin != end;++pbegin){std::cout<<*pbegin<<endl;}

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.