- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我理解 C 中按引用传递和按值传递的含义,但在我的程序中,为了简洁起见,我想将引用“转发”到另一个函数,例如:
void f2(int *x2)
{
*x2 = 7;
}
void f1(int *x1)
{
*x1 = 4;
f2(x1);
}
int main()
{
int x = 1;
f1(&x);
printf("%d\n",x);
return 1;
}
main函数打印出4还是7?此外,如果我想确保将引用传递给 f1
内的 f2
,我的想法是:
void f1(int *x1)
{
*x1 = 4;
int x2;
&x2 = x1;
f2(&x2);
}
但我觉得它不是那么优雅和快速(在我的程序中,我使用一些相当大的结构
而不是int
,并且我想避免创建副本在每个函数中)。我的灵魂到底还能用吗?有没有更优雅、更快的方法?
提前致谢
编辑:
我测试了它,第一个片段确实编译并按预期工作(主要打印出 7)。所以第一种方法是正确的方法。第二个代码片段是错误的,无法编译
最佳答案
在 C 中,既没有引用,也没有按引用传递概念。参数始终按值传递。
您可以使用指针模拟按引用传递语义。当然,您可以传递该指针。指针本身是按值传递的(请参阅我的第一段),因此每个函数都有自己的副本。但这个值(它指向的地址)不会改变,所以每个函数都可以访问指针指向的数据。
<小时/>你的第二个代码片段没有任何意义。改变变量的地址是不可能的。而且,正如您应该从我的回答的其余部分中了解到的那样,无论您尝试什么都是不必要的。
关于C、通过引用传递给函数。向前传球,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45303574/
我正在使用以下键存储哈希集:measurement: , f.e. measurement:1482236501103 ,然后在稍后我想传递某个时间戳并获取从给定时间戳到结束的所有记录。但由于 Red
有 Home.vue 和 Statistics.vue 页面。 Home.vue 渲染 TableFields.vue 组件。在 Home.vue 中,有一些字段编号,在页面加载时设置了初始值“3”。
Spring MVC ModelAndView forward 不工作。下面的代码没有将请求转发到 Name.jsp。非常感谢您的帮助。 package main.java.com.mkyong.co
我有一个这样的值列表, lst = [1, 2, 3, 4, 5, 6, 7, 8] 期望输出 : window size = 3 1 # first element in the list
我正在尝试将硬币类移动到按下键时的适当元素。但是,如果元素的名称相似,我不确定如何正确导航 DOM 树。另外,我根据按下键(e.which)向上/向下移动,但如果硬币在某些地方,我需要旋转回到顶部或底
我需要制作一个不循环的幻灯片,但实际上在幻灯片之间弹跳:例如,如果我有 3 张幻灯片,我希望幻灯片顺序为: 1 -> 2 -> 3 -> 2 -> 1 -> 2 ... 我想出了这个解决方案(使用 j
我只想获取下一次迭代中的元素(使用基于范围的 for 循环) 我试过类似的东西: *(&x+1) 应该表示“i+1”,如果“i”在这里是一个迭代器的话 bool factorChain(std::ve
我有一个 slider ,其可能值在 0 到 1 之间,步长为 0.1 例如,如果我在起点移动 slider ,动画将从 (0%) 开始,如果我将 slider 移动到 0.5 ( 50%) 表示将从
这个问题在这里已经有了答案: python time subtraction (1 个回答) 关闭 9 年前。 我想实现的很简单: time.time() 不太可读。如何获得: 例如 time.ti
如何在 html 中显示此 ► 播放(向前)或向右实心箭头符号? 最佳答案 是的,►,但它在所有浏览器中看起来可能不一样。 关于html - 如何在 html 中显示 ► 播放(向前)或向右实心箭头符
我正在开发 wpf c# 应用程序,我需要检测用户何时按下“/ ” 但我找不到“/ ” e.Key,我看到有Key.OemBackslash和类似的东西,但我找不到“/”(正斜杠)的正确事件.....
我有两个数据集,(dt1) 一个带有“开始”日期,每个 ID 最多两个条目(因为这些是 L 或 R 眼手术的条目)和一个 (dt2) 第二个数据库,其中包含多个日期之前和之后开始日期。这些不仅限于眼科
我有使用 3 个欧拉 Angular (aRotX、aRotY、aRotZ)在其位置(aX、aY、aZ)显示模型的代码: var m = mat4.create(); mat4.identity(m)
我需要从方向 vector (vForward) 获取旋转矩阵 我还有 vRight 和 vUp vector 。所有这些 vector 都是单位 vector 。 我只需要得到旋转矩阵。 要获得仅在
我是一名优秀的程序员,十分优秀!