[英]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.