關於C和C 中的指標

2021-10-16 12:19:16 字數 1475 閱讀 4295

指標型別說明符:int pa; intpb=&b; //定義型別為指標的變數

指標的解引用 :*pa=3; //引用指標所指向的變數的值

int *pa=null; //初始化指標pa為空

//後面可以再為指標pa的位址賦值(pa=&a)

//但是不能讓指標pa直接指向常量(*pa=3;錯)

int a=0; int *pa=&a; //初始化指標pa指向變數a,變數a與指標pa占用同一塊記憶體

//改變a,a和pa的值都改變 a=2;→a=2,pa=2;

//改變pa,a和pa 的值都改變 pa=2;→a=2.pa=2

//修改pa的指向,a的改變不再影響pa →pa=1,a=5,b=1

int *pa;pa=&a;等價於int *pa;

指標指向**(一塊有意義的記憶體);

指標指向的物件的內容是什麼;

不要使用未初始化的指標變數。

按值呼叫:不能再被調函式中改變呼叫語句中的實參值

模擬按引用呼叫:形參為指標型別,實參為變數位址值

void swap(int *x,int *y); //函式宣告,形參為兩個int型指標變數

swap(&a,&b); //函式呼叫,實參為變數a和b的位址值

字串常量本身代表的就是存放它的常量儲存區的首位址。

陣列名代表陣列的首位址。

char *ptr=「hello」; //定義乙個字元指標變數ptr,用字串常量「hello」的首位址為其初始化,

char *ptr;ptr=「hello」;// 即讓ptr指向字串常量"hello",而不是將hello賦值給ptr

*ptr=『w』; //不合法,ptr占用的是常量儲存區,常量儲存區是唯讀的,不能修改

char str=「world」;ptr=str;(即ptr=&str[0]) //合法,str不可修改,但可以修改ptr的位址值

*ptr=『a』; //合法,等價於ptr[0]=『a』;相當於str[0]=『a』

//列印 *ptr 相當於列印str[0],列印ptr,str相當於列印整個字串

用字元陣列作函式引數,向函式傳遞字串

不帶陣列下標,void mystrcopy(char str) //函式定義

mystrcopy(str) //函式呼叫,實參為陣列名(陣列首位址)

用字元指標作函式引數,向函式傳遞字串

使用字元指標,void mystrcopy(char *str) //函式定義

mystrcopy(str) //函式呼叫,實參為指標變數名

函式指標 char (*fun)();

void sort(int a,int n,int (*compare)(int a,int b); //函式宣告

sort(score,n,ascending); //函式指標指向函式,ascending()

返回指標的函式 char *fun();

return ptr; //返回字串ptr的首位址,即整個字串

關於c 中的this指標

記憶中,初識c 中的this指標的時候,根本不知道它是什麼,有什麼作用。再識,就知道了它的作用,也掌握了它背後的東西。this指標,就是乙個指向當前物件的指標。我們知道,定義出乙個類,它在記憶體中是不佔 空間的,只有定義了該類型別的物件時,系統就會為該物件分配一段儲存空間,這段空間 裡只儲存成員變數...

關於c 中的this指標

記憶中,初識c 中的this指標的時候,根本不知道它是什麼,有什麼作用。再識,就知道了它的作用,也掌握了它背後的東西。this指標,就是乙個指向當前物件的指標。我們知道,定義出乙個類,它在記憶體中是不佔 空間的,只有定義了該類型別的物件時,系統就會為該物件分配一段儲存空間,這段空間 裡只儲存成員變數...

C 中關於this指標

在學習完c語言之後,很大的感覺就是指標是貫穿c語言的核心,但是接觸到c 後,發現很多都是封裝好的,直接用就可以。其中有一塊問題就是,通過函式去呼叫類的成員,上好像是直接訪問的,但是又有很多問題,為啥這個類裡面的函式可以直接訪問這個類裡面的成員呢?這就是我們需要關注的this指標。首先來看下面這段 c...