簡體   English   中英

來自malloc的指針數組是什么意思?

[英]What does pointer array from malloc mean?

unsigned char *dup = malloc(size);

我的問題可能很幼稚。 dup[2]是什么意思? 它是從已分配內存中指向第三個字符的指針,還是從已分配內存中第三個字符的值? 我已經搜索過google,但沒有找到解釋此結果的結果。 非常感謝您的寶貴時間。

dup[2]在語義上與*(dup + 2) 因此,它是dup指向的第三個字節的值。 也就是說,內存地址為:

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

請注意, malloc不會初始化返回的內存,因此嚴格來說, dup[2]的值可以是任何值。

是分配的內存中第三個字符的值嗎?

這個。

dup[2]等效於*(dup + 2) + 2隱含的行為類似於+ 2 * sizeof(char)

如果要在不取消引用的情況下指向內存中第三個字符的指針,則只需使用與上述相同的字符即可。 沒有取消引用運算符:

unsigned char *thirdChar = 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語句的輸出相同,這非常清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM