gpt4 book ai didi

比较内存地址

转载 作者:太空狗 更新时间:2023-10-29 15:11:54 25 4
gpt4 key购买 nike

我如何比较固定大小的 char 数组中的两个内存地址?假设我有两个指针,每个指针指向数组中的不同内存位置:

char *ptr1; //points to a memory address in the array;
char *ptr2; //points to another memory address in the array;

如果我执行 printf("%p\n%p\n", ptr1, ptr2); 然后它将内存地址打印为十六进制。

output:
0x601240
0x601274

我如何将这些存储到变量中,它们是否具有可比性,以便我可以判断哪个内存地址在数组中排在第一位。

另一个问题:而不是 %p 如果我做 %d 来打印我得到的内存地址:

output:
6296128
6296180

这些也是有效的内存地址吗(我的意思是这样使用安全吗)?

最佳答案

十六进制值只是指针中地址的表示。要比较两个指针(指向同一数组的元素或指向数组末尾的元素),您可以使用类似

的代码
if (ptr1 < ptr2)

至于格式说明符,%d 不适用于指针(尽管在某些实现中,它会打印出正确的值,您不应该使用它),请使用 %p 用于 void * 指针:

printf("%p\n%p\n", (void *)ptr1, (void *)ptr2);

关于比较内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20466077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com