首页 > 试题广场 >

下列函数定义中,有语法错误的是()

[不定项选择题]
下列函数定义中,有语法错误的是()
  • void fun(int x, int y){x = *y;}
  • int * fun(int *x, int y){return x += y;}
  • void fun(int *x, int y){*x += y;}
  • void fun(int x, int y){*x = *y;}

AD错误很明显,B可能是用于地址移位。

发表于 2020-03-27 16:47:35 回复(2)

使用gcc 9.1.0在linux平台编译如下:

function.c: 在函数‘fun1’中:
function.c:9:29: 错误:一元 ‘*’参数类型无效(有‘int’) 
    9 | void fun1(int x, int y){x = *y;}
      |                             ^~
function.c: 在函数‘fun4’中:
function.c:12:25: 错误:一元 ‘*’参数类型无效(有‘int’) 
   12 | void fun4(int x, int y){*x = *y;}
      |                         ^~
function.c:12:30: 错误:一元 ‘*’参数类型无效(有‘int’) 
   12 | void fun4(int x, int y){*x = *y;}
      |                              ^~

所以答案当然是A,D了!

发表于 2019-08-10 16:44:29 回复(1)
D:void fun(int x, int y){*x = *y;} *操作必须是指针
发表于 2019-09-04 19:54:21 回复(1)
这应该是地址常量赋值,非法操作吧😀
发表于 2019-09-15 13:22:14 回复(0)
然而我只会python
发表于 2019-07-30 20:09:57 回复(0)
int x  ---x是变量
int *x     ---*x才是变量
int *  是返回变量地址
故ad错误
发表于 2019-09-23 23:39:21 回复(0)
B选项是对指针进行加法运算,相当于地址移位
发表于 2022-06-10 17:18:16 回复(0)

Java题?

发表于 2019-11-20 15:43:43 回复(0)
  • int * fun(int *x, int y){return x += y;}
注意:这个其实存在问题。
1、如果形参x传入的是堆区指向的指针变量,那么不会有问题。
2、如果形参x传入的是栈区指向的指针变量,函数返回局部变量的指针,是会存在安全隐患。
发表于 2023-04-29 22:23:06 回复(0)
第二个很容易造成野指针的情况啊,顺丰的题怎么喜欢这样搞
发表于 2022-03-30 10:54:46 回复(0)
a ,d错误 类型不一样,一个是整型int,一个是指向整型的指针int* 类型修改一下就行 void fun1() {int *x,b; b=1; *x=b; printf("x=%d\n",*x); int y; y=2; *x = y; printf("x=%d\n",*x); } int main(){ fun1(); return 0; } 输出 x=1 x=2
编辑于 2021-12-18 14:26:26 回复(0)
<p>b应该是错的啊指针地址不能相加</p>
发表于 2020-11-07 20:54:27 回复(0)
指针是存放别的变量地址的变量,变量是不能进行赋值的。
发表于 2020-08-20 12:08:29 回复(0)

AD错的不都一样吗

发表于 2019-11-16 23:37:49 回复(0)
我觉得这道题有问题哎
发表于 2019-11-12 15:36:54 回复(0)
A 选项是打印错了吧,应该是 void fun(int x,int *y){x=*y;
发表于 2019-08-03 14:44:15 回复(0)