unsigned char *dup = malloc(size);
我的問題可能是天真的。 dup[2]
是什麼意思?它是來自malloced內存的第三個char的指針,還是來自malloced內存的第三個char的值?我搜索谷歌,但沒有找到結果來解釋這一點。非常感謝您的時間。malloc中的指針數組是什麼意思?
unsigned char *dup = malloc(size);
我的問題可能是天真的。 dup[2]
是什麼意思?它是來自malloced內存的第三個char的指針,還是來自malloced內存的第三個char的值?我搜索谷歌,但沒有找到結果來解釋這一點。非常感謝您的時間。malloc中的指針數組是什麼意思?
這是來自malloced內存的第三個字符的值嗎?
這個。
dup[2]
等價於*(dup + 2)
。 + 2
隱含地表現爲+ 2 * sizeof(char)
。
如果你想要一個指向內存中第三個字符的指針,而不需要對它進行解引用,那麼你就像上面一樣使用它。沒有對其操作:
unsigned char *thirdChar = dup + 2;
dup[2]
與*(dup + 2)
在語義上相同。所以它是由dup
指向的第三個字節的值。也就是說,內存地址是:
dup, dup+1, dup+2, ....., dup+size-1
注意malloc
不初始化返回的內存,所以嚴格來說,中dup[2]
值可以是任何東西。
顯然,dup[k]
在這種情況下表示字符串,這是非常類同*(dup + 2)
的第三個字符。
支持的代碼如下:
#include<stdio.h>
#include<string.h>
int main() {
unsigned char *dup = malloc(10);
scanf("%s", dup);
printf("%c", dup[2]);
printf("\n%c", *(dup+2));
return 0;
}
輸出是兩個printf
聲明一樣,它講得很清楚了。
在google上應該很容易找到這個 – harold