【问题标题】:How do i print the memory address of void**? [duplicate]如何打印 void** 的内存地址? [复制]
【发布时间】:2016-03-23 17:45:15
【问题描述】:

我正在尝试在 void** 中打印 void* 内存地址,如下所示:

#include <stdio.h>
#include <stdlib.h>

int main(){

    void** MyArray = malloc(500 * sizeof(void*));
    printf("Last pointer: %p\n", *MyArray[499]);
    free(MyArray);
    return 0;

}

但是当我尝试编译时,我得到一个警告和一个错误:

  1. Line: 6 Col: 31 in D:\C\test.c [警告] 取消引用 'void *' 指针
  2. Line: 6 Col: 2 in D:\C\test.c [错误] 无效表达式的使用无效

我做错了什么?谢谢

【问题讨论】:

  • *MyArray[499] 应该是MyArray[499]
  • MyArray 已初始化,但其成员未初始化。因此,您将打印一个未初始化的变量,即垃圾。除了语法错误。

标签: c


【解决方案1】:

你分配内存来保存一个数组来保存一堆 void 指针。该数组尚不包含任何指针。如果您想要数组中最后一个位置的地址,请执行以下操作:

int main(){
    void** MyArray = malloc(500 * sizeof(void*));
    printf("Last pointer is located at: %p\n", (void *)&(MyArray[499]));
    free(MyArray);
    return 0;

}

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多