C语言编译报:error: invalid type argument of ‘unary *’ (have ‘int’)
2024-07-28
180
问题描述
在编译一个很简单的C语言代码时,遇到C语言指针使用不恰当导致编译报错error: invalid type argument of ‘unary *’ (have ‘int’),代码如下:
#include stdio.h
int main(){
int b = 10; //assign the integer 10 to variable b
int *a; //declare a pointer to an integer a
a=(int *)b; //Get the memory location of variable b cast it
//to an int pointer and assign it to pointer a
int *c; //declare a pointer to an integer c
c=(int *)a; //Get the memory location of variable a which is
//a pointer to b. Cast that to an int pointer
//and assign it to pointer c.
printf(%d,(**c)); //报错位置在这里.
return 0;
}
原因和解决
因为变量“c”是指向一个指针的地址,所以,其类型应当为int**,修改为如下:
int **c;
c = a;
完整的代码如下:
#include stdio.h
int main(){
int b=10;
int *a;
a=b;
int **c;
c=a;
printf(%d,(**c)); //successfully prints 10
return 0;
}
修改后的代码再编译就正常了。
总结
C语言的指针一定要注意,指针所指向地址本身是什么类型,如上面的代码,指针实际是指向了另外一个指针的地址,指针的值为另外一个指针的地址,而不知最终变量的地址。
更新于:3个月前赞一波!
相关文章
- 【说站】本月编程语言排行:C语言稳居榜首,python持续上升
- 【说站】python int返回的方法探究
- 【说站】java语言的发展历史
- 【说站】java语言的特点有哪些
- 【说站】java语言属于哪种语言
- 【说站】java语言代码大全
- 【说站】java语言好还是c 好
- 【说站】java与c语言区别
- c# int数值转enum枚举
- HTTP Mime-Type对照表
- C语言运算符执行顺序对照表
- Go语言运算符执行顺序对照表
- C语言中获取当前时间的格式化字符串
- 开发环境管理工具Conda,支持语言:Python, R, Scala, Java, Javascript, C/ C++, FORTRAN
- Linux下编译libxml2的源码报错:you must specify a host type if you use `--no-verify'
- 有哪些C/C++的开源项目可以给系统的学习C/C++语言做参考呢?
- c语言中s的含义,C语言%s是什么意思
- Python语言学习概述
- go语言适合做什么?
- rust语言处理含有中文内容文档的处理方法
文章评论
评论问答