发布网友 发布时间:2024-10-24 01:50
共1个回答
热心网友 时间:14小时前
void f(int y, int x) {y = y + x。
// 形参y,x和实参y,x存储地址不同,改变形参的值对实参没有影响。
// y=y+x=6。
x = x + y。
// x的值就是主函数里实参x的值。
// x=2+4=6。
}
void main()
int x = 2,y = 4。
f(y, &x)。
// f()函数中只改变了x的值,没有改变y的值。也就是只有向函数传递某个值的指针才能改变这个值。
printf("x=%d,y=%d\n", x, y)。
}
// 运行结果x=8,y=4。
扩展资料:
用户定义函数采用零个或更多的输入参数并返回标量值或表。函数最多可以有 1024 个输入参数。当函数的参数有默认值时。
调用该函数时必须指定默认 DEFAULT 关键字才能获取默认值。该行为不同于在存储过程中含有默认值的参数,而在这些存储过程中省略该函数也意味着省略默认值。用户定义函数不支持输出参数。
标量函数返回在 RETURNS 子句中定义的类型的单个数据值。可以使用所有标量数据类型,包括 bigint 和 sql_variant。不支持 timestamp 数据类型、用户定义数据类型和非标量类型(如 table 或 cursor)。
在 BEGIN...END 块中定义的函数主体包含返回该值的 Transact-SQL 语句系列。返回类型可以是除 text、ntext、image、cursor 和 timestamp 之外的任何数据类型。
表值函数返回 table。对于内嵌表值函数,没有函数主体;表是单个 SELECT 语句的结果集。对于多语句表值函数。
在 BEGIN...END 块中定义的函数主体包含 TRANSACT-SQL 语句,这些语句可生成行并将行插入将返回的表中。有关内嵌表值函数的更多信息,请参见内嵌用户定义函数。有关表值函数的更多信息,请参见返回 table 数据类型的用户定义函数。
BEGIN...END 块中的语句不能有任何副作用。函数副作用是指对具有函数外作用域(例如数据库表的修改)的资源状态的任何永久性更改。
函数中的语句唯一能做的更改是对函数上的局部对象(如局部游标或局部变量)的更改。不能在函数中执行的操作包括:对数据库表的修改,对不在函数上的局部游标进行操作,发送电子邮件,尝试修改目录,以及生成返回至用户的结果集。
参考资料来源:百度百科-用户定义函数