看板 C_and_CPP 關於我們 聯絡資訊
推測原作者是不是想問 為什麼要用指標遞增而不是 [] 取值 其實這裡 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