每日一題(六)

2021-10-09 19:20:36 字數 1090 閱讀 1297

在程式中,對陣列和字串的訪問,哪個更有效率?

先看一段程式:

#include

"stdio.h"

intmain()

宣告了乙個陣列c和乙個字串p,然後同樣讀取其中的乙個值,對應的彙編**如下:

10:a=c[1];

004010678a4df1 movcl,byteptr[ebp-0fh]

0040106a884dfc movbyteptr[ebp-4],cl

11:a=p[1];

0040106d8b55ec movedx,dwordptr[ebp-14h]

004010708a4201 moval,byteptr[edx+1]

004010738845fc movbyteptr[ebp-4],al

可以看出對於a = c[1]的操作,是直接將陣列中字串的元素讀取到c1暫存器中(也就是a)

對於a = p[1]的操作,顯示將指標的值edx中,再根據位址讀取字元元素

所以陣列的讀取比字串的讀取要有效率,即在棧上的陣列比指標指向的字串要讀取快。

#include

using

namespace std;

int fun (

int x)

return count;

}int

main()

分析:把乙個整數減去1,再和原整數做 & 運算,就會把整數最右邊乙個1變成0,通過while(x)來計數有多少個1.

**已知strcpy的函式原型:char *strcpy(char strdest, const char strsrc)其中strdest 是目的字串,strsrc 是源字串。不呼叫c++/c 的字串庫函式,請編寫函式 strcpy。

#include

#include

cahr* strcpy (

char

*strdest,

const

char

*strsrc)

每日一題 1

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...

每日一題2018 3 21

leetcode 2 模擬十進位制運算考察單鏈表基本操作。題無難點,個人基礎需要提高。definition for singly linked list.struct listnode class solution while p while q if shi val s next null ret...

每日一題2018 3 22

leetcode 03 最長不重複子串 第一反應就是動態規劃。看到了網上的方法一。直接把問題簡化為找兩個重複字元間的最長距離,太巧妙了!class solution if i idx max locs s i i return max ling老師的方法二 仍舊轉化為動態規劃,但是為節省空間不再開個...