将结构传递给函数

2023-11-24

我是一名新 C 程序员,我想知道如何通过struct到一个函数。我收到错误并且无法找出正确的语法来执行此操作。这是它的代码......

Struct:

struct student{
    char firstname[30];
    char surname[30];
};

struct student person;

Call:

addStudent(person);

原型:

void addStudent(struct student);

和实际功能:

void addStudent(person)
{
    return;
}

编译器错误:

第 21 行:警告:可疑标签声明:struct Student
第 223 行:参数 #1 与原型不兼容:


这是如何通过struct引用。这意味着您的函数可以访问struct在函数之外并修改其值。您可以通过将指向结构的指针传递给函数来完成此操作。

#include <stdio.h>
/* card structure definition */
struct card
{
    int face; // define pointer face
}; // end structure card

typedef struct card Card ;

/* prototype */
void passByReference(Card *c) ;

int main(void)
{
    Card c ;
    c.face = 1 ;
    Card *cptr = &c ; // pointer to Card c

    printf("The value of c before function passing = %d\n", c.face);
    printf("The value of cptr before function = %d\n",cptr->face);

    passByReference(cptr);

    printf("The value of c after function passing = %d\n", c.face);

    return 0 ; // successfully ran program
}

void passByReference(Card *c)
{
    c->face = 4;
}

这就是你如何通过struct按值,以便您的函数接收到的副本struct并且无法访问外部结构来对其进行修改。我所说的外部是指函数之外。

#include <stdio.h>


/* global card structure definition */
struct card
{
    int face ; // define pointer face
};// end structure card

typedef struct card Card ;

/* function prototypes */
void passByValue(Card c);

int main(void)
{
    Card c ;
    c.face = 1;

    printf("c.face before passByValue() = %d\n", c.face);

    passByValue(c);

    printf("c.face after passByValue() = %d\n",c.face);
    printf("As you can see the value of c did not change\n");
    printf("\nand the Card c inside the function has been destroyed"
        "\n(no longer in memory)");
}


void passByValue(Card c)
{
    c.face = 5;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将结构传递给函数 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 使用 C# 读取 Soap 消息

  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 必须采用“app_label.ModelName”形式。" % model ValueError: 无效的模型引用

    When I python3 manage py makemigrations 我收到以下错误 File Library Frameworks Python framework Versions 3 5 lib python3 5 site
  • ASP.Net MVC:dbml 文件的最佳实践

    这可能只是一个是或否类型的问题 但无论如何 从我见过的使用 mvc 的所有 以及大多数 示例来看 创建 dbml 文件的方法似乎只是将数据库的整个架构放入其中 并让它自动生成所有 linq to sql 的优点 看来您只需要其中一个 因为您
  • 如何打开控制台与 Express 应用程序交互?

    如何打开控制台与我的 Express 应用程序交互 我正在尝试测试某些方法是否可以创建模型 我正在使用 SequelizeJS 但这对于这个问题的答案应该不重要 我已经习惯了 Rails 我可以做的事情 heroku run rails c
  • 无法删除 webpack 捆绑 js 文件中的注释

    我一直在尝试删除 webpack 捆绑的 js 文件中的注释 我已经尝试了几种方法 但它仍然不起作用 我收到这样的评论 n Copyright 2013 present Facebook Inc n All rights reserved
  • MessageDialog ShowAsync 在第二个对话框上引发 accessdenied 异常

    我正在尝试在 Windows 8 中实现重试 取消对话框 该对话框第一次显示正常 但单击重试并再次失败时 我在调用 ShowAsync 时遇到访问被拒绝的异常 我不知道为什么 但奇怪的是有时代码工作正常 当我设置断点时我没有得到异常 这里真
  • 使用 Code First 对 3 个表之间的多对多关系进行建模

    我有以下 3 个实体 User Account Role 关系就像 一个用户可以拥有多个帐户 一个账户可以属于多个用户 每个用户在帐户中都有一个角色 有一些预定义的角色 在枚举 Roles 中定义 我到目前为止 public class U
  • 在 Heroku 环境中 POST 请求被视为 GET

    我有一个奇怪的案例 我有一个 RoR 应用程序 它提供了我从 Java 应用程序连接到的 REST API 我正在本地开发 RoR 并将其部署在 Heroku 环境中 不管如何 我尝试从 Java APP Mozilla REST 客户端等
  • 在 Python 中浏览文件和子文件夹

    我想浏览当前文件夹及其所有子文件夹并获取所有带有 htm html 扩展名的文件 我发现可以像这样确定一个对象是目录还是文件 import os dirList os listdir current directory for dir in
  • 如何在sql server中实现多列全文搜索?

    我正在尝试对我为其创建视图的两列实施全文搜索 VendorName ProductName 我有全文索引等工作 但实际查询是导致我出现一些问题的原因 我希望用户能够使用一些标准搜索约定 AND OR NOT 以及按 进行术语分组 这很好 但
  • 如何将具有相同类型项目的列表列表合并到单个项目列表?

    这个问题很混乱 但是通过下面的代码描述就清楚多了 List
  • 迭代器与 for

    在一次采访中有人问我使用迭代器比使用迭代器有什么优势for循环或使用有什么好处for循环迭代器 有谁可以回答这个问题吗 首先 for 循环有两种 它们的行为非常不同 一种使用索引 for int i 0 i lt list size i T
  • Django-Admin:来自 UserProfile 的 list_filter 属性

    我希望允许我的网站管理员在管理网站上过滤来自特定国家 地区的用户 所以自然的做法是这样的 admin py class UserAdmin django contrib auth admin UserAdmin list filter us
  • 使用iphone 5的后置麦克风

    我已经习惯了跟随code从麦克风传输音频的 I O 我想做的是想要选择后置麦克风进行录音 我读过将 kAudioSessionProperty Mode 设置为 kAudioSessionMode VideoRecording 可以完成这项
  • 如何在 yml 中获取我的配置值 - 使用 dropwizard (微服务) Jersey D.I @Injection?

    这是我的代码片段 这是我的 yml 文件 productionServer host production server amazonaws com publicIp xx xx xx xx privateIp xx xx xx xx us
  • 如何通过C#配置Outlook帐户?

    需要通过c 配置email 姓名 邮件服务器等 在不使用 Outlook Redemption 的情况下如何执行此操作 First 创建一个 PRF 文件 通过 NET 应用程序手动或动态 然后 要导入帐户 请使用命令行选项启动 Outlo
  • 为什么我们不将 .class 扩展名与“java”命令一起使用?

    为什么我们不给filename class之后归档java命令 而不是仅filename 假设我们要编译test java程序 然后我们运行javac test java 没关系 之后它会产生test class文件但运行我们运行的程序ja
  • 与 suPHP 一起实现登录

    如何设计类似登录的功能来使用 suPHP 的文件权限 例如 如果我有一个网站www example com以下两个用户有自己的主目录 每个用户都有一个 php 脚本test php and a validateUser php属于另一个用户
  • 在 MediaProjection 中完全隐藏安全视图 - android

    我正在使用 MediaProjection API 创建屏幕录像机应用程序 在我的应用程序中 我将停止按钮显示为一个小的覆盖窗口 我已将此视图保持安全 以便它不会出现在最终录制的视频中 此视图不会出现在最终视频中 但最终输出本身是一个黑色区
  • 使用服务主体访问 Azure Blob 存储

    我想通过使用活动目录服务主体的凭据从 python 访问私有 blob 存储 我知道这个相关问题如何在 python 中针对 Azure 存储 blob 对用户进行身份验证 这帮助我走到了这一步 但现在我陷入了困境 我可以进行身份 验证并获
  • 将结构传递给函数

    我是一名新 C 程序员 我想知道如何通过struct到一个函数 我收到错误并且无法找出正确的语法来执行此操作 这是它的代码 Struct struct student char firstname 30 char surname 30 st