Memcpy
和memcmp
函數可以帶一個指針變量嗎?Memcpy func帶指針變量? char * p; char * q;的memcpy(P,Q,10);它會起作用嗎?
char *p;
char* q;
memcpy(p,q,10); //will this work?
memcmp(p,q,10); //will this work?
Memcpy
和memcmp
函數可以帶一個指針變量嗎?Memcpy func帶指針變量? char * p; char * q;的memcpy(P,Q,10);它會起作用嗎?
char *p;
char* q;
memcpy(p,q,10); //will this work?
memcmp(p,q,10); //will this work?
不,你的代碼寫的都不行,因爲你傳遞未初始化的指針memcpy()
(和memcmp()
,但memcpy()
電話就夠了)。這將導致未定義的行爲,因爲您不允許從這些「隨機」位置讀取/寫入。
您可以通過確保指針是有效的,例如解決它:
char buf[10], *p = buf;
const char *q = "hello hello";
memcpy(p, q, 10);
printf("the copying made the buffers %s\n",
memcmp(p, q, 10) == 0 ? "equal" : "different");
當然p
可以通過只是普通buf
上面所取代。
我明白了,但下面這個工作嗎?char * p =「buf」; const char * q =「hello hello」; memcpy(p,q,10); printf(「複製緩存%s \ n」, memcmp(p,q,10)== 0?「equal」:「different」); – Dev 2015-02-24 14:54:35
不,這是未定義的行爲,因爲字符串文字居住在只讀內存中。這就是爲什麼我使用'char'數組作爲目的地。 – unwind 2015-02-24 14:56:16
現在確定它在memcpy()的情況下非常清楚.. memcmp()在這方面也如此我們至少需要使用至少一個數組參數? – Dev 2015-02-24 17:23:57
什麼阻止你嘗試它? – 2015-02-24 14:06:48
如果將內存分配給目標指針 – Gopi 2015-02-24 14:07:09
「memcpy」的第一個和第二個參數是指針。你還指望他們是什麼人?你有沒有讀過'memcpy'的文檔? – 2015-02-24 15:12:47