作者applecool (noOneKnows)
看板C_and_CPP
標題Re: [問題] 函式指標使用時機
時間Sun May 5 01:16:10 2013
推測原作者是不是想問
為什麼要用指標遞增而不是 [] 取值
其實這裡 C 跟 C++ 一樣,指標遞增效率可能會好些
原本 [] 內外配上一般指標和數字就會被解釋成這樣
s[2] = *(s+2) = *(2+s) = (2)[s]
至於網路上 while 的版本主要是在描述行為而已。
*s++ = a 因為 s 是一般指標,後置++的效率沒有影響
如果 s 是你自己實作的 iterator
最好寫成
*s = a;
++s;
※ 引述《junny0204 (~睿~)》之銘言:
: 最近自己實作 strcat strcmp stcpy 等函式
: 舉strcpy 為例
: void myStrcpy(char *str1, const char *str2)
: {
: for (int i = 0; (s1[i] = s2[i]) != '\0'; i++)
: ;
: }
: 這是我自己用for寫的版本
: 看了網路上很版本都是用while
: 我也改了一下
: void myStrcpy(char *str1, const char *str2)
: {
: while (*str1++ = *str2++)
: ;
: }
: 我要問的是
: 為什麼 要特別用 函式指標 呢?
: void *myStrcpy(char *str1, const char *str2)
: {
: while (*str1++ = *str2++)
: ;
: }
: 用與不用 最大的差別在哪裡?
: 或者說不用函式指標 會有什麼缺點
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.160.121
→ IdFormat:其實效率沒差... pA[5] 與 *(pA + 5)是都一樣的... 05/06 13:58
→ IdFormat:x86裡都差不多是 Mov EAX [ebp - XX]; Mov EBX, [EAX +5] 05/06 13:59
→ IdFormat:最重要的 不管什麼程式語言對cpu來說都是鬼語 根本看不懂 05/06 14:00