如何解决错误需要类型为‘int’的参数,但参数 3 的类型为‘int *’
我正在尝试将每个值的地址编译并显示到数组中。
int i[10] = {1,2,3,4,5,6,7,8,9,10},x;
float f[10] = {1,10};
double d[10] = {1,10};
/*int *p_i = &i;
float *p_f = &f;
double *p_d = &d;*/
int main(void){
printf("\n\tInteger\tFloat\tDouble");
printf("\n=======================================");
/* loop to show the address in each element that have the arrayes */
for(x = 0; x < 10; x++){
printf("\nElement %d\t%d\t%d\t%d",x+1,&i[x],&f[x],&d[x]);
// printf("\nElement %d\t%d\t%d\t%d",p_i++,p_f++,p_d++);
}
printf("\n=======================================\n");
}
如果语法正确,我不明白为什么。我也有搜索,找到的代码几乎相同。
解决方法
您使用了错误的转换说明符。
当您提供指针类型的参数时,转换说明符 %d
需要 int
类型的参数。
代替
printf("\nElement %d\t%d\t%d\t%d",x+1,&i[x],&f[x],&d[x]);
写
printf( "\nElement %d\t%p\t%p\t%p",( void * )&i[x],( void * )&f[x],( void * )&d[x] );
或
printf( "\nElement %d\t%p\t%p\t%p",( void * )( i + x ),( void * )(f + x ),( void * )( d + x ) );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。