在程式中,對陣列和字串的訪問,哪個更有效率?
先看一段程式:
#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老師的方法二 仍舊轉化為動態規劃,但是為節省空間不再開個...