变量名和函数名重复的话

//变量名和函数名重复的话,
/*声明+定义 fn=function fn(){
console.log(1);
}
声明 var fn;(不需要该步骤)
声明(不需要该步骤)+定义 fn=function fn(){
console.log(2);
}
定义 fn=10;
*/
fn();//2
function fn(){
console.log(1);
}
fn();//2
var fn=10;
console.log(fn);//10
function fn(){
console.log(2);
}
console.log(fn);//10

转载于:https://www.cnblogs.com/qiqi105/p/8250418.html

### 变量函数指针的概念及关系 #### 1. 变量的定义 变量是用来存储数据的一个命名位置,它代表了一定大小的内存区域。通过变量名可以访问这块内存中的值并对其进行操作。在 C/C++ 中,声明一个变量时需要指定它的类型以及名称。例如: ```c int a = 10; float b = 3.14f; char c = 'A'; ``` 上述代码分别定义了一个整数型变量 `a`、浮点型变量 `b` 字符型变量 `c`。 #### 2. 函数指针的定义 函数指针是一种特殊的指针类型,用来保存函数入口地址。当程序运行时,每一个被定义的函数都会占用一块连续的内存空间,而函数的名字就是这一块内存区间的起始地址。因此可以通过定义一个指向这种特定类型的指针来间接调用对应的函数[^1]。 例如下面的例子展示了如何定义使用一个简单的加法运算函数指针: ```c #include <stdio.h> // 定义一个返回 int 值,并接收两个 int 参数的函数 int add(int x, int y){ return x + y; } int main(){ // 定义一个能指向此类函数的指针 int (*func_ptr)(int,int); func_ptr = &add; printf("%d\n", (*func_ptr)(5,3)); return 0; } ``` 这里需要注意的是,在实际应用过程中可以直接赋给未取址符(&)前缀形式的目标函数名字即可完成初始化工作,因为标准规定下这种情况下的表达式会被解释成相应实体所在处所对应的实际物理定位信息。 即简化后的版本如下所示: ```c func_ptr = add; printf("%d\n", func_ptr(5,3)); ``` #### 3. 变量函数指针之间的主要差异对比分析 | 特性 | 普通变量 | 函数指针 | |--------------------|-----------------------------------|----------------------------------| | 存储的内容 | 数据 | 地址 | | 所占的空间大小 | 根据具体的数据类型决定 | 足够容纳一个机器码指令的位置长度 | | 使用目的 | 表达具体的数值 | 方便灵活地切换不同功能模块 | | 初始化的方式 | 给予初始值 | 将目标方法体传入 | 另外值得注意的一点在于两者之间还存在语法层面的不同之处——对于普通的标量而言我们需要借助解引用符号(*)才能获取其所关联对象的真实面貌;然而针对后者来说由于本身已经处于高层次抽象级别上所以无需额外附加任何修饰成分就能正常运作起来[^4]。 最后值得一提的小技巧是如果希望进一步提升可读性减少重复劳动的话还可以考虑引入typedef关键字来自定义新的复合数据单元从而达到更加简洁明了的效果[^3]: ```c typedef void(*FUNC_TYPE)(int,char); void myFunction(int i,char ch){...}; ... FUNC_TYPE ptr=myFunction; ptr(someIntValue,someCharValue); ``` 这样不仅可以让后续书写变得更加直观而且也有助于增强整体架构设计上的条理性便于后期维护升级等工作顺利开展下去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值