指標介紹 及模擬實現函式

2021-08-19 18:46:37 字數 2287 閱讀 7395

指標就是變數,用來存放位址的變數

**(*p):解引用操作,是p所指向的內容 **

指標的初始化是用&操作符完成的,它用於產生運算元的記憶體位址

指標的大小在32位平台上是4 個位元組,在64位平台是 8個位元組

指標是有型別的型別是:type+ 的方式

指標的型別決定了指標向前或者向後走一步有多大(距離)指標的型別決定了,對指標解引用的時候有多大的許可權(能操作幾個位元組)

ex : char* 的指標解引用就只能訪問乙個位元組,

int* 的指標解引用能訪問四個位元組

###二級指標

指標變數也是變數,是變數就有位址,那麼指標變數的位址則存放在 二級指標

2 .*( * ppa)通過對 ppa中的位址進行解引用,這樣就找到的是 pa,(* ppa)其實訪問的就是 pa ; 然後對 pa 進行解引用操作 (pa),那找到的就是 a。

###指標表示式解析

看下列**,能否做左值?能否做右值?

左值表示 空間;右值表示 內容

&ch ;

&ch是位址變數,不能做左值,但是可以做右值

cp ;

cp是變數,可以做左值,可以做右值

&cp ;

&cp是位址變數,不能做左值,但是可以做右值

*cp+1;

*cp+1 表示式的結果是常量,不能做左值,但是可以做右值

*(cp+1)||( *++cp );

二者表示ch 之後的一塊空間,可以做左值,也可以做右值

++cp;

++cp 前置++ 不能作為左值,可以是右值

cp++;

cp++ 後置++ 不能作為左值,可以是右值

c語言規定:前置++不能作為左值;但c++語言規定可以###指標運算

###模擬實現strcpy函式(指標)

char *my_strcpy(char *dest,const char *str)

*dest=='\0';

return ret;

}

###模擬實現strcat函式

char *my_strcat(char *dest,const char *str)

while((*dest++ = *str++))//這一句不能分開寫在迴圈裡面的原因是:str字串的『\0』拷貝不過去

return ret;

}

###模擬實現strstr函式

char *my_strstr(const char *str,const char *substr)

if(*s2=='\0')

return str;

str++;

} return null;

}

###模擬實現strchr函式

char *my_strchr(char *str,char ch)

return null;

}

###模擬實現strcmp函式

int my_strcmp(const char *str1,const char *str2)

if(*str1>*str2)

return 1;

else

return -1;

}

###模擬實現memcpy函式

void * my_memcpy(void *dest,void *str,size_t count)//void* 無型別指標,不能參與運算

return ret;

}

###模擬實現memmove函式

void * my_memmove(void *dest, const void* src, 

size_t count)//size_t 無符號整型

} else }

return ret;

}

strlen函式詳解及模擬實現

strlen函式原型 unsigned int strlen const chaar s strlen標頭檔案 include strlen函式的功能是計算計算字串中字元的個數 不包括 0 strlen char 函式求的是字串的實際長度,它求得方法是從開始到遇到第乙個 0 如果你只定義沒有給它賦初...

模擬實現智慧型指標

智慧型指標可以用來管理資源,原自構造析構函式 raii 還可以像原生指標一樣使用。auto ptr 管理許可權的轉移。scoped ptr 防拷貝。shared ptr 引用計數解決auto ptr的缺陷。其中shared 自身帶有一定缺陷,迴圈引用,和不可釋放陣列類,檔案類等資源,幸運的是它支援定...

模擬實現atoi函式

atoi函式就是把一串字串轉換為int型整數的函式,通過將字串中的字元乙個乙個強制型別轉換,並且存入乙個臨時陣列中,再將陣列中的數字處理一下即可得到我們需要的整數。實現這個函式的過程中,我們需要注意負數的處理,要進行一次判斷,確定返回值的正負。其他的字元按照ascii碼表進行轉換即可。下面是 inc...