#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语句,都会显示第二个错误。
我不知道哪里出了问题,有人知道我怎么解决这个问题吗?
发布于 2017-03-18 22:33:35
您忘记了创建p和q int指针。此外,您还忘记了在printf语句中使用格式说明符。尝试以下操作:
#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);
}发布于 2017-03-18 22:29:45
&a[3] (或&a[5])是一种指针类型,即int *。
p被定义为int。
因此您需要将p和q定义为int *,如下所示:
int * p = &a[1];
int * q = &a[5];发布于 2017-03-18 22:32:33
一元运算符&产生其操作数的地址。类型为T *,不是T。因此,在没有强制转换的情况下,您无法将int *分配给int。表达式
&a[1]生成a[1]的地址。
我想你的意思是将变量定义为int的指针,而不仅仅是int。
int *p = &a[1];
int *q = &a[5]; https://stackoverflow.com/questions/42875580
复制相似问题