我正在尝试在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;
}
但是当我尝试编译时,我收到警告和错误:
- Line:6 Col:31 in D:\ C \ test.c [Warning] dereferencing'void *'pointer
- 行:6列:D:\ C \ test.c中的2 [错误]无效使用void表达式
醇>
我做错了什么?感谢
答案 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;
}
}