format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=] scanf("%d",age);
时间: 2024-01-05 18:04:02 浏览: 233
这个错误提示的意思是,`scanf` 函数中使用了 `%d` 格式化符号,期望的是 `int *` 类型的指针作为参数,但是传入了一个 `int` 类型的变量作为参数。正确的用法应该是将变量的地址作为参数传递给 `scanf` 函数,例如:
```
int age;
scanf("%d", &age);
```
这样就可以正确地将输入的整数保存到 `age` 变量中了。
相关问题
warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=] scanf("%d", M);
这个警告是由于在使用`scanf`函数时,传递给`%d`格式化字符串的参数类型不正确。`%d`格式化字符串要求传递一个指向`int`类型的指针作为参数,而您传递的是一个`int`类型的变量。
为了解决这个警告,您需要将传递给`scanf`函数的参数改为指向`int`类型的指针。修改代码如下:
```csharp
int M;
scanf("%d", &M); // 在变量前添加取地址运算符&
```
通过在变量`M`前添加取地址运算符`&`,您将传递`M`的地址给`scanf`函数,以便正确地将输入的值存储到变量`M`中。
请注意,在使用`scanf`函数时,确保传递正确的参数类型,并且为指针类型的参数提供正确的地址。这样可以避免类似的警告和错误。
format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
这个错误是因为你使用了错误的格式化说明符。`%d` 是用于格式化整数的,但是你传递了一个指向整数的指针,导致编译器报错。
例如,下面的代码会产生这个错误:
```
int *p = malloc(sizeof(int));
scanf("%d", p); // 这里会产生上述错误
```
要解决这个问题,你需要使用 `%p` 格式化说明符,并将指针作为参数传递给 `printf` 函数,例如:
```
int *p = malloc(sizeof(int));
scanf("%d", p);
printf("The value of p is %p\n", (void *)p);
```
注意,在使用 `%p` 格式化说明符时,要将指针强制转换为 `void *` 类型。
阅读全文