c语言函数参数加入报错 c++语言中如果调用函数时,要改变实参或者返回多个值
c语言函数参数列表中参数加取址符调用传地址反而会报错
c 语言函数 形参 列表 中 可以是普通变量 或指针变量,不允许 加取址符。
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业望奎免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
c++ 语言函数 形参 列表 中 加取址符 的参数 叫 “引用”,c 不支持。
------
函数 调用 的实参 类型 要与 形参对应,只有 形参 为 指针变量 的 实参 才可以是 地址。
void f(int x, int *y){};
int a,b;
int *p;
p=a;
调用
可以是 f(b,a);
可以是 f(b,p);
不可以是 f(b,a);
不可以是 f(b,a);
不可以是 f(b,a);
不可以是 f(b,p);
不可以是 f(b,p);
不可以是 f(b,p);
(但愿回答不被封。)
gcc 函数引用参数报错(C语言)
函数参数用i是C++的引用格式,C是不支持这个的。在VC++下面这么些无所谓,那个本身模糊了C和C++的区别。不过GCC就不一样了,只支持C的语法,不支持C++,你这么写当然会报错。
warning: return makes integer from pointer without a cast应该是你函数里的问题,返还的是一个指针,但定义的时候是整数。虽然不会有错,还是会有警告。检查一下这是不是你的本意,是的话就要用强制转换把指针变成整数,那样就不会报错。
C语言函数传入参数为什么会出现原本的数值和传入后的数值不一样这样的错误,明明应该没有溢出?
1 所有的参数传递,都是传递值的拷贝。(如果想知道为什么,去学习编译原理的函数调用的参数压栈和出栈对应内容)。
2 C传指针进去,其实也是把这个指针值按拷贝传送进去。但是因为指针值指向一块外部内存空间(其实更多是堆空间,或外层栈变量空间),所以感觉可以在函数里改变外部变量。其实本质还是按拷贝传递,只是传递进去的是一个访问变量的渠道。
因此,如果我们希望函数内能改变外部的指针值,往往传进去的是指针变量的指针。呵呵,很多初学C的程序员,对**非常难理解。
C语言 定义结构体 作为函数参数 总是报错显示 unknown typename 编译器是Codeblocks
你定义的void convert(carte_t *list);实在结构体定义之前,导致error: unknown typename 'carte_t';
需要将函数定义在结构体之后!
以下修改
#include stdio.h
#include stdlib.h
#includemath.h
typedef struct carte
{
double x;
double y;
}carte_t;
typedef struct polar
{
double l;
double i;
}polar_t;
void convert(carte_t *list);//定义在这
int main()
{
carte_t* list = malloc(sizeof(carte_t));
*list =(carte_t){3,0.8};
convert(*list);
printf("%g %g\n",list-x,list-y);
return 0;
}
void convert(carte_t *list)
{
polar_t* newlist = malloc(sizeof(polar_t));
newlist-l=pow((pow(list-x,2)+pow(list-y,2)),0.5);
newlist-i = atan2(list-y,list-x);
printf("%g %g",newlist-l,newlist-i);
}
还有一些其他的错误,我就不点出来了!只是帮你看了error: unknown typename 'carte_t'这个问题
本文标题:c语言函数参数加入报错 c++语言中如果调用函数时,要改变实参或者返回多个值
链接地址:http://myzitong.com/article/dodjddj.html