[Error] invalid type argument of unary '*' (have 'int')
时间: 2023-12-31 11:04:45 浏览: 500
这个错误通常是因为你在使用解引用运算符(*)时,将其应用于一个不是指针类型的变量上。解引用运算符用于访问指针所指向的内存地址上的值。
根据你提供的错误信息,错误发生在对一个整数类型变量使用了解引用运算符。但是,解引用运算符只能应用于指针类型的变量。
要解决这个问题,你需要确保在使用解引用运算符之前,将其应用于指针类型的变量。例如,如果你想访问一个指针所指向的值,你可以这样做:
```cpp
int* ptr; // 声明一个指向整数类型的指针
int value = *ptr; // 使用解引用运算符获取指针所指向的值
```
请检查你的代码,确保你正在正确地使用解引用运算符,并将其应用于指针类型的变量。
相关问题
error: invalid type argument of unary '*' (have 'double') 17 | int s=P*r*r; | ^~
这个错误通常出现在尝试对不是指针的变量进行取值操作时。在这个错误信息中,出现了"invalid type argument of unary '*' (have 'double')",说明在程序的第17行中,尝试对一个double类型的变量进行取值操作,而这是不合法的。
在这个具体的代码行中,似乎是对一个double类型的变量r进行了取值操作。需要注意的是,取值操作(*)在C/C++中通常用于指针类型变量,而对于普通的数据类型(如double、int等)是不需要使用取值操作的。因此,可以尝试删除这个错误行中的"*"符号,将代码修改为"int s = P * r * r;",即可解决这个错误。
34 26 C:\Users\陈莲\Desktop\1.c [Error] invalid type argument of unary '*' (have 'SqList')
这个错误信息表示在C语言编译过程中遇到了一个问题,错误发生在使用一元乘法操作符 '*' 的时候。错误的具体内容是:无效的类型参数 unary '*' (拥有 'SqList')。这意味着编译器期望一个能够被乘法操作符使用的类型,但实际上却得到了一个类型为 'SqList' 的表达式,这显然是不合适的。
'SqList' 通常是一个自定义的结构体类型,代表一个顺序表。顺序表在C语言中通常会使用结构体来定义,并且可能会包含数组和其他属性。在C语言中,你不能直接对一个结构体使用乘法操作符 '* ',因为这种操作没有定义。如果你想对结构体中的某个整型成员进行运算,你需要通过成员访问操作符 '.' 来访问这个成员,然后对它进行乘法操作。
例如,如果你有一个包含整数数组的顺序表结构体定义如下:
```c
typedef struct {
int *elem; // 指向动态分配数组的指针
int length; // 数组当前长度
} SqList;
```
如果你想将顺序表中的每个元素乘以一个整数,你需要遍历数组并对每个元素进行操作,像这样:
```c
SqList list;
int factor = 3;
for (int i = 0; i < list.length; ++i) {
list.elem[i] *= factor;
}
```
如果你直接尝试使用 `*list` 或者 `*list.elem` 来进行乘法操作,就会出现你遇到的错误。
阅读全文