我如何打印void **的内存地址?

时间:2016-03-23 17:45:16

标签: c

我正在尝试在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 [Warning] dereferencing'void *'pointer
  2.   
  3. 行:6列:D:\ C \ test.c中的2 [错误]无效使用void表达式
  4.   

我做错了什么?感谢

1 个答案:

答案 0 :(得分:1)

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

    !/usr/bin/perl 
    use strict;
    my $period;
    my $galaxy;
    my $solar = 'solar.txt';
    open(my $fh, '<:encoding(UTF -8)', $solar)
      or die "could not open file!!!";

    while ( my @galaxy = <$fh>){
        my($planet,$number_moons,$obj_orbit,$orbital_radius,$orbital_period,$orbital_inclination, $orbtial_eccentricity, $discoverer, $year) = split / /, $galaxy;
        if($orbital_period ne '0'){
            $period = $orbital_period * 86400;
                    s/$orbital_period/$period/g;
                    print @galaxy;
                    }
    }