首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的一元'*‘(有'int')错误的类型参数无效

C中的一元'*‘(有'int')错误的类型参数无效
EN

Stack Overflow用户
提问于 2017-03-18 22:26:35
回答 3查看 74.2K关注 0票数 7
代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

/*
 * 
 */
int main() {

    int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
    int p = &a[1];
    int q = &a[5]; 

    printf(*(p+3));
    printf(*(q-3));
    printf(*(q-p));
    printf(*p<*q);

    return (EXIT_SUCCESS);
}

错误:"initialization makes from pointer Wint cast -Wint-conversion“和"invalid type argument of unary '*‘(have 'int')”。对于上述变量的初始化,第一个错误显示两次。对于每个print语句,都会显示第二个错误。

我不知道哪里出了问题,有人知道我怎么解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-18 22:33:35

您忘记了创建pq int指针。此外,您还忘记了在printf语句中使用格式说明符。尝试以下操作:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

/*
* 
*/
int main() {
  int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  int *p = &a[1];
  int *q = &a[5];   

  printf("%d\n", *(p+3));
  printf("%d\n", *(q-3));
  printf("%d\n", *q-*p);
  printf("%d\n", *p<*q);
  return (EXIT_SUCCESS);
}
票数 13
EN

Stack Overflow用户

发布于 2017-03-18 22:29:45

&a[3] (或&a[5])是一种指针类型,即int *

p被定义为int

因此您需要将pq定义为int *,如下所示:

代码语言:javascript
复制
int * p = &a[1];
int * q = &a[5];
票数 2
EN

Stack Overflow用户

发布于 2017-03-18 22:32:33

一元运算符&产生其操作数的地址。类型为T *,不是T。因此,在没有强制转换的情况下,您无法将int *分配给int。表达式

代码语言:javascript
复制
&a[1]

生成a[1]的地址。

我想你的意思是将变量定义为int的指针,而不仅仅是int。

代码语言:javascript
复制
int *p = &a[1];
int *q = &a[5]; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42875580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档