了解 C 中的函数和指针

2024-01-01

这是一个很简单的问题,但是下面的函数原型是什么意思呢?

int square( int y, size_t* x )

size_t* 的剂量是什么意思?我知道 size_t 是一种数据类型(int >=0)。但是我如何阅读它所附的 * 呢?它是指向 x 的内存位置的指针吗?总的来说,我在处理这些东西时遇到了麻烦,如果有人可以提供方便的参考,我将不胜感激。


谢谢大家。我理解指针是什么,但我想我很难理解指针和函数之间的关系。当我看到函数原型定义为int sq(int x, int y),那么我就完全清楚发生了什么。然而,当我看到类似的东西时int sq( int x, int* y),那么我一生都无法理解第二个参数的真正含义。在某种程度上,我理解这意味着“传递指针”,但我对事情的理解不够好,无法自己操纵它。


怎么样一个教程理解指针 http://www.geekpedia.com/tutorial44_Understanding-Pointers.html?

然而,在这种情况下,指针可能用于修改/返回值。在 C 语言中,函数可以返回值有两种基本机制(请原谅这个愚蠢的例子):

可以直接返回值:

float square_root( float x )
{
    if ( x >= 0 )
        return sqrt( x );
    return 0;
}

或者它可以通过指针返回:

int square_root( float x, float* result )
{
    if ( x >= 0 )
    {
        *result = sqrt( result );
        return 1;
    }
    return 0;
}

第一个叫做:

float a = square_root( 12.0 );

...而后者:

float b;
square_root( 12.00, &b );

请注意,后一个示例还允许您检查返回的值是否真实——这种机制广泛用于 C 库中,其中函数的返回值通常表示成功(或失败),而值本身则表示成功。通过参数返回。

因此对于后者你可以写:

float sqresult;
if ( !square_root( myvar, &sqresult ) )
{
   // signal error
}  
else
{ 
   // value is good, continue using sqresult!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 C 中的函数和指针 的相关文章

  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • “字符串”是什么意思?信息'

    我刚刚在查看定义时发现了这个PlatformNotSupportedException class 什么是string message意思是 据我所知是 是缩写Nullable lt gt but Nullable lt gt 只能应用于结
  • 如何重命名序列化对象列表后生成的 XML 属性

    我正在序列化对象列表List
  • C# 测试活动的互联网连接。 Ping google.com

    C 2008 我正在使用此代码来测试互联网连接 因为我的应用程序必须登录到网络服务器 但是 如果用户互联网连接失败或电缆被拔出 我必须通知用户 Ping www google com to check if the user has a i
  • C# 并行与并行线程代码性能

    我一直在测试 System Threading Parallel 与线程的性能 我很惊讶地发现并行比线程花费更长的时间来完成任务 我确信这是由于我对并行的了解有限 我刚刚开始阅读 我想我会分享一些片段 如果有人可以向我指出并行代码比线程代码
  • 比较 LINQ to SQL 中的两个日期

    我有一个数据库 其中有一个名为会议的表 会议日期使用以下格式存储在此表中 May 2nd 2011 例如 格式为5 2 2011 我的要求是获取两个日期 例如 2011 年 4 月 25 日和 2011 年 5 月 2 日 之间的会议 并编
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 三种 System.Drawing 方法表现出缓慢的绘制或闪烁:解决方案?或其他选择?

    我正在通过 System Drawing 进行一些绘图 但遇到了一些问题 我将数据保存在队列中 并将该数据绘制 绘制 到三个图片框中 此方法填充图片框 然后滚动图形 所以不要在以前的绘图上绘制 并且逐渐看起来更混乱 我找到了两种绘制图表的解
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • 如何在 Visual Studio 2010 Express 中引用 system.drawing?

    我对此有点陌生 我的印象是要绘制我创建的矩形 我需要使用 system drawing graphics 问题是 我收到错误 命名空间 System 中不存在类型或命名空间名称 drawing 您是否缺少程序集引用 当我右键单击解决方案资源
  • 生成范围 [min,max] 内的随机数 [重复]

    这个问题在这里已经有答案了 我正在使用 C 生成范围 min max 内的整数随机数 我在用 int random int int min int max return min rand max min 但我认为上面的代码适用于范围 min
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • 在Framework 4.6项目中使用.net core DLL

    我已经在 net core 2 0 中构建了一个 DLL 现在我想在使用 net 4 6 1 框架的 WinForms 项目中使用它 我可以引用该 dll 但收到 System IO FileLoadException 表示找不到 Syst
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果

随机推荐

  • 当我将 python 线程设置为守护进程时有什么不同

    当我将 python 线程设置为守护进程时 使用thread setDaemon True 守护线程不会阻止应用程序退出 当所有非守护线程 包括主线程 完成时 程序结束 因此 一般来说 如果您在后台执行某些操作 您可能希望将线程设置为守护进
  • 使用 AJAX 在 PHP 中发送电子邮件

    我正在尝试使用 AJAX 在简单的联系表单中以 PHP 发送电子邮件 我有以下简单表单的代码 提交按钮的 PHP 代码和 AJAX 脚本 当我尝试发送电子邮件时 它没有发送任何电子邮件 并且总是触发 AJAX 错误消息 我不太擅长 AJAX
  • 错误:对象当前正在其他地方使用。

    我开发了一个应用程序 可以从数码单反相机连续读取图像流 while liveViewExit Create a Memory Stream stream new IntPtr Get the bitmap image from the DS
  • 从 PHP 数组中删除零值

    我有一个像这样的普通数组 Array 0 gt 0 1 gt 150 2 gt 0 3 gt 100 4 gt 0 5 gt 100 6 gt 0 7 gt 100 8 gt 50 9 gt 100 10 gt 0 11 gt 100 12
  • C#中使用AppDomain动态加载和卸载dll

    在我的一个与系统诊断相关的应用程序中 相关的DLL需要在C 中动态加载和卸载 经过一番搜索 我发现单独的 DLL 无法动态加载完整的 AppDomain 所以我必须创建一个 AppDomain 并使用该 DLL 进行动态加载和卸载 但我找不
  • Font Awesome 5 图标无法与 React 一起使用(“找不到图标”错误)

    我正在尝试在我的 React 项目中使用 Font Awesome 5 Pro 我有许可证 并且我已按照API https www npmjs com package fortawesome react fontawesome尽我所能 但我
  • jQuery 获取高度和宽度

    我做了一个if函数检查宽度是否 document ready function var pic pic need to remove these in of case img element has set width and height
  • Django + PostgreSQL 连接 - 无法使用服务器端游标

    我在 PostgreSQL 中有一个存储过程 它返回一个引用游标 它的名称可以作为参数传递 Example stored procedure CREATE OR REPLACE FUNCTION example stored procedu
  • UWP 中的扩展执行

    我想为我的 UWP 应用程序使用后台任务 下面的代码是我在Windows Mobile中的后退按钮单击事件 private async void MainPage BackRequested object sender BackReques
  • 我如何使用 SVN 作为 Maven 存储库

    我正在开发具有多个依赖项的项目 大多数依赖项都可以在我们的集中 Maven 存储库中找到 我的项目包含一些仅特定于我的应用程序且在我们的 Maven 存储库中不可用的 JAR 由于某些政策 限制 我无法将该 jar 部署到我们的 Maven
  • 匹配 XPath 中的不间断空格值

    假设我有这样的 XML 结构 table tr td nbsp td tr table 我将如何指定与谓词中的节点值的比较 tr td 应该指定什么而不是 解决办法是 tr td u0160 实际的 unicode 表示方式取决于您使用的工
  • 在angularjs中为多个部分视图创建单个html视图

    我希望创建一个包含多个标签的 html 文件 这些应该作为单独的单独视图 通常保存在部分文件夹中 然后我希望在路由控制器中指定它们 现在我正在做如下 应用程序 js angular module productapp config rout
  • 如何完成这个 Google Calendar Api v3 - FreeBusy PHP - 示例?

    我想使用 google api v3 freebusy php 来查找我的三个日历的免费 freebusy 信息 但我找不到代码的正确结尾 我想访问 freebusy response 的 日历 忙 值 由于 api 参考中没有示例代码 而
  • 使用 roxygen2 时如何指定加载 S4 方法的顺序

    我已经多次遇到以下问题 假设你有两节课 classA and classB在以下文件中描述classA R the class classA This is a class A blabla section Slots describe i
  • 如何根据指针变量计算数组的大小?

    我有数组指针 内存中的数组 我可以根据数组的指针计算数组的大小吗 我实际上不知道数组在内存中的位置 我只得到指针地址 假设9001 使用该地址我必须计算数组大小 Thanks 不 您无法计算数组的大小 C 中的对象不携带类型信息 因此您必须
  • window.scrollTo 在手机中不起作用

    在我的网页的移动视图上 我可以垂直和水平方向滚动 但这始终从左上角开始 现在我想使用 window scrollTo 或类似的东西将视口设置为我的自定义位置 window scroll 似乎只适用于桌面浏览器 知道我该如何解决这个问题吗 我
  • ESLint 和 Prettier 冲突,无法为代码块禁用 Prettier

    我们的项目使用 Prettier 和 ESLint 通常它们可以很好地协同工作 但我们遇到了两者发生冲突的问题 我不知道为什么 我不知道如何修复它 并且我无法禁用该行的 prettier 因为我收到错误 我们设置的相关部分 prettier
  • Lambda 和 std::function

    我正在努力赶上 C 11 和所有出色的新功能 我有点被 lambda 困住了 这是我能够开始工作的代码 include
  • 用 javascript 替换输入

    大家好 我正在尝试将 text 输入类型替换为 password 它适用于以下代码 function replaceT obj var newO document createElement input newO setAttribute
  • 了解 C 中的函数和指针

    这是一个很简单的问题 但是下面的函数原型是什么意思呢 int square int y size t x size t 的剂量是什么意思 我知道 size t 是一种数据类型 int gt 0 但是我如何阅读它所附的 呢 它是指向 x 的内