Declare and Definition

本文详细解释了在编程中变量与函数的声明与定义的概念。声明是向计算机介绍名字,而定义则是为这个名字分配存储空间。无论是变量还是函数,在编译器层面都需要进行存储空间的分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明”向计算机介绍名字,它说,“这个名字是什么意思”。而“定义”为这个名字分配

存储空间。无论涉及到变量时还是函数时含义都一样。无论在哪种情况下,编译器都在“定义”

处分配存储空间。对于变量,编译器确定这个变量占多少存储单元,并在内存中产生存放它们

的空间。对于函数,编译器产生代码,并为之分配存储空间。函数的存储空间中有一个由使用

不带参数表或带地址操作符的函数名产生的指针。

定义也可以是声明。如果该编译器还没有看到过名字A,程序员定义int A,则编译器马上

为这个名字分配存储地址。

SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO /****** Object: Stored Procedure dbo.RMS_ITEMRESETPOINT_USEITEM (生化属性重置) Script Date: 2022/3/10 15:42:32 ******/ ALTER PROCEDURE RMS_ITEMRESETPOINT_USEITEM @GameID varchar(14), @ItemIndex int, @WindowKind int, @WindowIndex int AS set nocount on DECLARE @DelItemError int DECLARE @UpItemError int SET @DelItemError = 1 SET @UpItemError = 1 begin transaction RMS_ITEMRESETPOINT_USEITEM DECLARE @TotalGrade int DECLARE @StrengthGrade int DECLARE @SpiritGrade int DECLARE @DexterityGrade int DECLARE @PowerGrade int DECLARE @NewStrengthGrade int DECLARE @NewSpiritGrade int DECLARE @NewDexterityGrade int DECLARE @NewPowerGrade int DECLARE @RandNumber int DECLARE @ID int DECLARE @ItemID int DECLARE @ItemCount int SET @ID = 0 SET @ItemID = 0 SET @ItemCount = 0 -- 检测快捷栏第8格是否只有一个生化物品 SELECT TOP 1 @ID = ID, @StrengthGrade = StrengthGrade, @SpiritGrade = SpiritGrade, @DexterityGrade = DexterityGrade, @PowerGrade = PowerGrade FROM tblSpecialItem1 WHERE GameID = @GameID AND WindowKind = 3 AND WindowIndex = 7 AND Position = 1 AND (ItemIndex >= 100 or ItemIndex <=199) AND CNT = 1 IF @ID > 0 BEGIN SELECT TOP 1 @ItemID = ID, @ItemCount = ISNULL(CNT,0) FROM tblSpecialItem1 WHERE ItemKind = 6 AND ItemIndex = @ItemIndex AND Position = 1 AND GameID = @GameID AND WindowKind = @WindowKind AND WindowIndex = @WindowIndex IF @ItemCount = 1 BEGIN DELETE FROM tblSpecialItem1 WHERE ID = @ItemID AND GameID = @GameID IF @@ROWCOUNT > 0 AND @@ERROR = 0 BEGIN SET @DelItemError = @@ERROR END END ELSE IF @ItemCount > 1 BEGIN UPDATE tblSpecialItem1 SET CNT = CNT - 1 WHERE ID = @ItemID AND GameID = @GameID IF @@ROWCOUNT > 0 AND @@ERROR = 0 BEGIN SET @DelItemError = @@ERROR END END END SELECT @TotalGrade = @StrengthGrade + @SpiritGrade + @DexterityGrade + @PowerGrade IF @TotalGrade <= 255 BEGIN SELECT @RandNumber = CAST(CEILING(RAND() * 100000000) as int) SELECT @NewStrengthGrade = @RandNumber%@TotalGrade/3 IF @NewStrengthGrade > 255 BEGIN SET @NewStrengthGrade = 255 END SELECT @TotalGrade = @TotalGrade - @NewStrengthGrade SELECT @RandNumber = CAST(CEILING(RAND() * 100000000) as int) SELECT @NewSpiritGrade = @RandNumber%@TotalGrade/3 IF @NewSpiritGrade > 255 BEGIN SET @NewSpiritGrade = 255 END SELECT @TotalGrade = @TotalGrade - @NewSpiritGrade SELECT @RandNumber = CAST(CEILING(RAND() * 100000000) as int) SELECT @NewDexterityGrade = @RandNumber%@TotalGrade/2 IF @NewDexterityGrade > 255 BEGIN SET @NewDexterityGrade = 255 END SELECT @NewPowerGrade = @TotalGrade - @NewDexterityGrade UPDATE tblSpecialItem1 SET StrengthGrade = @NewStrengthGrade, SpiritGrade = @NewSpiritGrade, DexterityGrade = @NewDexterityGrade, PowerGrade = @NewPowerGrade WHERE ID = @ID AND GameID = @GameID IF @@ROWCOUNT > 0 AND @@ERROR = 0 BEGIN SET @UpItemError = @@ERROR END END IF @DelItemError = 0 AND @UpItemError = 0 BEGIN commit transaction RMS_ITEMRESETPOINT_USEITEM END ELSE BEGIN rollback transaction RMS_ITEMRESETPOINT_USEITEM END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值