当前位置: 首页 > 知识库问答 >
问题:

如何修复警告“格式指定类型'void*',但参数具有类型'char'警告”

武成和
2023-03-14

我正在获得我想要的输出,但不知道如何摆脱这些警告。任何帮助是值得赞赏的。

警告:

> < li>

Format指定类型“void *”,但该参数的类型为“char”[-w Format]printf(" \ n指针变量的值为%p\n ",* myString);

" Format指定类型为' void * ',但该参数的类型为' char' [-Wformat] printf("%p\n ",myString[x]);

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

 int main() {

   char *myString = "Daniel";
   int x;

   printf("\nThe pointer variable's value is %p\n", *myString);
   printf("\nThe pointer variable points to %s\n", myString);
   printf("\nThe memory location for each character are: \n");


   for (x = 0;x < 7;x++){
    printf("%p\n", myString[x]);
   }

 return 0;
 }

输出:

     The pointer variable's value is 0x44

     The pointer variable points to Daniel

     The memory location for each character are: 
     0x44
     0x61
     0x6e
     0x69
     0x65
     0x6c
     (nil)

共有1个答案

微生恩
2023-03-14

首先这些电话

printf("\nThe pointer variable's value is %p\n", *myString);

printf("%p\n", myString[x]);

没有意义,因为您正在尝试使用字符的值作为指针值。

至于其他警告,则只需将指针投射到类型void*。例如

printf("\nThe pointer variable's value is %p\n", ( void * )myString);
printf("\nThe pointer variable points to %s\n", myString);
printf("\nThe memory location for each character are: \n");


for (x = 0;x < 7;x++){
 printf("%p\n", ( void * )( myString + x ));
}
 类似资料:
  • 问题内容: 我在Eclipse(最新版本)中收到以下代码的警告。 该警告出现在“ A”中的“ T”处,并显示:“类型参数T隐藏了类型T”。 奇怪的是,以下代码不生成任何错误或警告。 但是现在我不能在告诉它T是什么类型的同时扩展A了。 我完全感到困惑。有人知道为什么会这样吗?谢谢。 问题答案: 您是否在某个地方有一个名为的类或接口,或者您在某个地方将其用作具体的类型名称,而不是用作类型参数(这意味着

  • 当我尝试编译它时,我收到以下错误,不知道为什么…… 警告:格式“%x”需要类型为“unsigned int”的参数,但参数2的类型为“char *”[-w format =] 代码:

  • 问题内容: 我正在写一个堆栈,其中一个带有静态Node,另一个非静态。 但是,当我尝试使节点变为非静态时,它会发出以下警告:“类型参数E隐藏了类型E” 我已经告诉我一些理解,因为静态成员是类的成员,所以它不会给我警告,但是当我将其设为非静态时,它属于实例。但这不是一个清晰的想法。 问题答案: 这是警告您,已经在作用域中使用了通用参数名称。更改的通用参数名称将是解决警告的一种方法: 但是由于E已经存

  • 问题内容: 为了保存一个由一个成员完成的付款的ArrayList,我想将“付款列表ID”更改为一个字符串,因此我创建了以下方法: 但是我收到以下警告: 谁能解释我为什么? 问题答案: 您绝对应该阅读有关Java泛型的本教程 :http : //docs.oracle.com/javase/tutorial/java/generics/ 简而言之: 许多Java类和类型(称为 泛型类 或 泛型类型

  • 假设我有一个map。现在我只想从中获取条目并创建一个新的map与这些条目。 我正在尝试做以下事情: 这似乎可行,但我得到了一个警告:类型模式(String,Int)中的非变量类型参数字符串未选中,因为它已被擦除消除。 我怎样才能摆脱警告?

  • 问题内容: 我有一些数据存储在Java元素中,我需要以给定的格式JSONObject返回它。虽然我的实现工作正常,但是我仍然从eclipse收到警告消息(版本:Juno Service Release 2): “ 类型安全性:put(Object,Object)方法属于原始类型HashMap。对通用类型HashMap的引用应参数化 ” 这是我的代码: 有问题的行是: 除了添加之外,还有其他方法可以