C語言 陣列 下標與指標 效率解析

2021-06-06 00:58:29 字數 734 閱讀 6780

以字串拷貝函式為例,解析陣列中下標與指標的效率情況。

指標的效率至少和下標相同。(原因參考c下標的實現原理,注意編譯器差異,因為部分編譯器針對下標設定了特殊彙編指令,不做考慮)

#define size 50

int x[size];

int y[size];

int i;

int *p1,*p2;

1:使用下標方案

void strcpy()

2:改用指標方案

void strcpy()

3:只用計數器方案

void strcpy()

4:暫存器方案

void strcpy()

5:消除計數器

void strcpy()

以上5中實現,前三種效能基本相同,第四種稍好,第五種最高(基本上無法再提高了)。

注意:效能和可讀性難以兼得,效能要求不高,建議第一種,直接明了;對於效能要求極高,比如實時性系統,只建議第五種。

------------------------------------------

c庫的字串複製函式實現如下:

void strcpy(char *buffer, char const *string)

更加簡潔和高效,原因是充分利用了字串結尾的'\0'標誌。也由此給大家乙個建議,如果是自定義型別的陣列,不妨也設一些結束標誌,以便編寫操作函式時方便。類似的如字串陣列就以nul(不是null)作為結束標誌。

指標與陣列 指標訪問與下標訪問

指標與陣列下標訪問與指標訪問的區別如下 1 以指標形式訪問指標 p 4 指標p的位址為0x00415754,加上4個字元的偏移量後的新位址為0x00415758,然後取出新位址中的內容0x65 e 2 以下標形式訪問指標 p 4 編譯器將下標形式的操作解析為以指標形式的操作。首先取出 指標p的位址0...

C語言指標陣列與陣列指標

初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...

C語言指標 指標與陣列

1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...