C 这个警告是什么意思&引用;int格式,指针arg";

C 这个警告是什么意思&引用;int格式,指针arg";,c,printf,C,Printf,int格式,指针arg(arg4) 此警告是关于什么的?我如何解决它?这意味着您使用了%d格式(用于整数),但参数实际上是一个指针。改为使用%p。这意味着您使用了%d格式(用于整数),但该参数实际上是一个指针。请改用%p。转换说明符“%d”要求其相应的参数为int类型,您正在向其传递指向int的指针。请使用“%p”打印指针值 “%d”转换说明符要求其相应的参数为int类型,您正在向其传递指向int的指针。请使用“%p”打印指针值 正如Jon和John所说,使用%p打印指针值%p要求指针指向voi

int格式,指针arg(arg4)


此警告是关于什么的?我如何解决它?

这意味着您使用了%d格式(用于整数),但参数实际上是一个指针。改为使用%p。

这意味着您使用了%d格式(用于整数),但该参数实际上是一个指针。请改用%p。

转换说明符“%d”要求其相应的参数为int类型,您正在向其传递指向int的指针。请使用“%p”打印指针值

“%d”转换说明符要求其相应的参数为int类型,您正在向其传递指向int的指针。请使用“%p”打印指针值

正如Jon和John所说,使用
%p
打印指针值
%p
要求指针指向void(
void*
),因此您需要在
printf()
调用
void*
中强制转换指针。这是因为,虽然在大多数情况下,编译器会为您隐式转换指向
void*
的任何对象指针,但在变量函数中它不会(不能)这样做,因为它不知道在这些情况下函数需要
void*
指针

printf("iXXTest[%d][%d] is at address %d and has a value of %d.\n", iCount1, iCount2, &iXXTest[iCount1][iCount2], iXXTest[iCount1][iCount2]);

正如Jon和John所说,使用
%p
打印指针值
%p
要求指针指向void(
void*
),因此您需要在
printf()
调用
void*
中强制转换指针。这是因为,虽然在大多数情况下,编译器会为您隐式转换指向
void*
的任何对象指针,但在变量函数中它不会(不能)这样做,因为它不知道在这些情况下函数需要
void*
指针

printf("iXXTest[%d][%d] is at address %d and has a value of %d.\n", iCount1, iCount2, &iXXTest[iCount1][iCount2], iXXTest[iCount1][iCount2]);
printf("...at address %p...\n", (void *)&iXXTest[iCount1][iCount2]);