2017-03-10 42 views
0
unsigned char *dup = malloc(size); 

我的問題可能是天真的。 dup[2]是什麼意思?它是來自malloced內存的第三個char的指針,還是來自malloced內存的第三個char的值?我搜索谷歌,但沒有找到結果來解釋這一點。非常感謝您的時間。malloc中的指針數組是什麼意思?

+3

在google上應該很容易找到這個 – harold

回答

1

這是來自malloced內存的第三個字符的值嗎?

這個。

dup[2]等價於*(dup + 2)+ 2隱含地表現爲+ 2 * sizeof(char)

如果你想要一個指向內存中第三個字符的指針,而不需要對它進行解引用,那麼你就像上面一樣使用它。沒有對其操作:

unsigned char *thirdChar = dup + 2; 
1

dup[2]*(dup + 2)在語義上相同。所以它是由dup指向的第三個字節的值。也就是說,內存地址是:

dup, dup+1, dup+2, ....., dup+size-1 

注意malloc不初始化返回的內存,所以嚴格來說,中dup[2]值可以是任何東西。

0

顯然,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聲明一樣,它講得很清楚了。

相關問題