float1

转载:

<!doctype html>

<html>
<head>
<meta charset="utf-8">
<title>浮动去空格</title>
<style>
button { margin: 0; }
p { clear: both; }
</style>
</head>

<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<p><input type="button" id="trigger" value="点击按钮浮动"></p>
<script>
var trigger = document.getElementById("trigger"),
buttons = document.getElementsByTagName("button");

var length = buttons.length;

if (trigger && length > 0) {
trigger.onclick = function() {
for (var index = 0; index < length; index += 1) {
buttons[index].style["cssFloat" in trigger.style? "cssFloat": "styleFloat"] = "left";
}
};
}
</script>
</body>
</html>

 

浮动会把元素之间的回车去掉, 但世界没有,不过移到了后面,因为看不见摸不着. 如果把回车换成&nbsp 就会发现,可以选中.

转载于:https://www.cnblogs.com/ningjie/p/9588085.html

<think>好的,我现在需要解析用户的问题,关于C/C++中的复杂声明,特别是float(*pff)(float f1, float f2)到底是函数指针还是函数本身。首先,我要确认用户的基础知识,可能需要从基本概念入手,比如指针和函数声明。 用户提供的例子是float(*pff)(float f1, float f2),看起来像是函数指针的声明。根据我之前的知识,函数指针的声明通常形式是返回类型(*指针名)(参数列表)。这里的结构符合这个模式:返回类型是float,指针名是pff,参数是两个float。所以初步判断这是一个函数指针。 接下来要验证这个结论是否正确。可以参考用户提供的引用内容,比如引用[2]中的例子,其中提到了指向非静态成员函数的指针的定义方式。虽然那里是针对类成员的,但基本语法结构类似,即返回类型(类名::*指针名)(参数)。而普通函数指针不需要类作用域,所以应该是float(*pff)(float, float),和用户的问题一致。 另外,引用[3]提到了lambda转换为函数指针的情况,说明函数指针在C++中确实有广泛的应用。而引用[4]中提到的函数指针部分也支持这一点。因此可以确定,这个声明确实定义了一个函数指针。 需要注意的是,如果去掉括号,比如float *pff(float f1, float f2),这会变成声明一个返回float指针的函数,名为pff,参数是两个float。所以括号在这里起到了关键作用,确保pff被解析为指针而非函数名。 用户可能对函数指针和函数声明的区别有疑问,需要详细解释语法结构。比如,运算符的优先级问题,如何区分指针和函数声明。此外,用户可能还想知道如何初始化和使用这样的函数指针,比如如何将其指向具体的函数,以及如何通过指针调用函数。 总结来说,这个声明是一个指向函数的指针,该函数接受两个float参数并返回float。需要分步骤解释每个部分的作用,强调括号的重要性,以及对比错误写法可能导致的误解。</think>### 解析 `float(*pff)(float f1, float f2)` 的声明含义 #### 1. **基本判断** - **该声明是一个函数指针**,而非普通函数或变量。 - **核心结构**:`(*pff)` 表明 `pff` 是一个指针,而后续的 `(float f1, float f2)` 表示该指针指向一个函数。 #### 2. **语法拆解** - **返回类型**:`float` 指针指向的函数返回 `float` 类型值。 - **指针名称**:`pff` 通过 `(*pff)` 将 `pff` 定义为指针。 - **参数列表**:`(float f1, float f2)` 指针指向的函数接受两个 `float` 类型参数。 #### 3. **对比错误写法** 若省略括号,声明变为 `float *pff(float f1, float f2)`,含义完全改变: - **函数声明**:`pff` 是一个函数,接受两个 `float` 参数,返回 `float*` 类型指针[^1]。 #### 4. **使用示例** ```cpp // 声明函数指针 float add(float a, float b) { return a + b; } float (*pff)(float, float) = &add; // 正确初始化 // 通过指针调用函数 float result = pff(3.14, 2.86); // 等价于 add(3.14, 2.86) ``` #### 5. **关键点总结** - **括号优先级**:`(*pff)` 确保 `pff` 被解析为指针,而非函数名。 - **静态与成员函数**:此声明仅适用于普通函数或静态成员函数。非静态成员函数需额外语法(如引用[2]中的 `类名::*`)。 - **类型安全**:函数指针的参数和返回类型必须与目标函数严格匹配。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值