首页 > 试题广场 >

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

[单选题]
下列函数定义中,有语法错误的是()
  • void fun(int x, int *y){*x *= *y;}
  • 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;}
1.void fun(int x, int *y){*x *= *y;}
解析:x为整形,不是指针,所以用*取值错误。

2.void fun(int *x, int y){*x += y;}
解析:x为int型指针,*对x地址取值后 *x = *x+y,表达式正确;

3.int * fun(int *x, int y){return x += y;}
解析:fun返回值为int指针, return x += y可以转化为 地址位移y个int大小,将位移后的值再付给x, x作为函数返回。故正确

4.void fun(int x, int *y){x *= *y;}
解析:x*=*y;-> x=x*(*y); 因为y是int指针,*取值和int相乘,表达式正确;

故题1错误。


发表于 2021-02-18 16:36:37 回复(1)
C为啥正确啊 看不懂 求大佬指点
发表于 2021-02-02 12:36:51 回复(2)
本题的D选项有点戏弄人的意思,x *= *y 的意思是x = x * (*y);这样不也把x当成地址了。。。
发表于 2021-01-25 12:57:34 回复(1)
int * fun(int *x, int y){return x += y;}
如果形参x接收的是栈上的指针变量,返回局部变量的指针,是会存在安全隐患的。
如果形参x接收的是堆上的指针变量,则返回不会有问题。
发表于 2023-04-29 23:17:44 回复(0)
x为整型而非指针类型
发表于 2022-04-06 22:34:45 回复(0)
x为int类型,并不是指针,所以*x写法错误
发表于 2020-09-14 16:45:15 回复(0)