函数的参数如果是一个父结构的指针,

这个结构包含在另一个子结构中,

  1. typedef struct test_node_one test_node_one_t;
  2. typedef struct test_node_two test_node_two_t;
  3.  
  4. struct test_node_one{
  5. int t1;
  6. };
  7.  
  8. struct test_node_two{
  9. test_node_one_t *to;
  10. char c;
  11. };

然后定义调用函数

  1. #include "t1.h"
  2.  
  3. void sum(test_node_one_t *t1){
  4. test_node_two_t *n;
  5. n=(test_node_two_t*)t1;
  6. printf("%c",n->c);
  7. }

调用

  1. test_node_two_t txt;
  2. test_node_one_t tx;
  3. txt.c='c';
  4. txt.to=&tx;
  5. sum(&txt);

输出:c

完整代码

  1. #ifndef T1_H_INCLUDED
  2. #define T1_H_INCLUDED
  3.  
  4. typedef struct test_node_one test_node_one_t;
  5. typedef struct test_node_two test_node_two_t;
  6.  
  7. struct test_node_one{
  8. int t1;
  9. };
  10.  
  11. struct test_node_two{
  12. test_node_one_t *to;
  13. char c;
  14. };
  15.  
  16. void sum(test_node_one_t *t1);
  17.  
  18. #endif // T1_H_INCLUDED
  19.  
  20. t1.h
  21.  
  22. #include "t1.h"
  23.  
  24. void sum(test_node_one_t *t1){
  25. test_node_two_t *n;
  26. n=(test_node_two_t*)t1;
  27. printf("%c",n->c);
  28. }
  29.  
  30. t1.c
  31.  
  32. #include <stdio.h>
  33. #include <stdlib.h>
  34. #include "t1.h"
  35.  
  36. int main()
  37. {
  38. printf("Hello world!\n");
  39. test_node_two_t txt;
  40. test_node_one_t tx;
  41. txt.c='c';
  42. txt.to=&tx;
  43. sum(&txt);
  44. return ;
  45. }
  46.  
  47. main.c

c语言函数参数类似继承的传递的更多相关文章

  1. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  2. C语言函数参数的传递详解

    一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){   int tmp;    ...

  3. C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)

    上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇 ...

  4. C语言 函数参数不确定时 需要用到va_start和va_end函数

    1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...);void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我 ...

  5. C 语言函数参数只能传指针,不能传数组

    今天被要求编写一个C/C++冒泡算法的程序,心想这还不是手到擒来的事儿,虽然最近都是用Javascript程序,很少写C/C++程序,但是好歹也用过那么多年的C语言: 首先想的是怎么让自己的代码看上去 ...

  6. lr参数与C语言函数参数的区别

    C变量不能再lr函数中使用: c变量必须定义在lr函数之前: LR参数可以在LR函数中直接当做字符串使用. LR参数是lr自己封装的一个钟对象, LR参数的表达方式:{ParamName}

  7. C语言函数参数既做出参又做入参的代表

    //使用fcntl对文件进行加锁 #include "stdio.h"#include "unistd.h"#include "fcntl.h&quo ...

  8. C语言通过函数参数不能带出动态内存的例子。

    实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...

  9. c语言中函数参数入栈的顺序是什么?为什么

    看到面试题C语言中函数参数的入栈顺序如何? 自己不知道,边上网找资料.下面是详细解释 #include <stdio.h> void foo(int x, int y, int z){   ...

随机推荐

  1. vue使用vue-video-player在直播中的应用

    文档地址:https://github.com/savokiss/vue-videojs-demo live demo地址:https://github.com/savokiss/vue-videoj ...

  2. Ubuntu系统下Anaconda使用方法总结

    前言:个人认为Anaconda比pip使用起来要方便很多,因为它创建虚拟环境和下载各种库都很方便.但是有时候conda的安装方法中没有某些库,必须使用pip来进行安装.所以,主要用Anaconda,偶 ...

  3. CSS中line-height继承问题

    在CSS中,line-height属性用于设置多行元素的空间量,比如文本.对于块级元素,它指定元素行盒的最小高度.对于非替代的inline元素,它用于计算行盒的高度. 语法 /* Keyword va ...

  4. 爬虫基础之urllib库(代码演示)

    # 自定义opener   from urllib.request import ProxyHandler,build_opener from urllib.error import URLError ...

  5. python接口测试-将运行结果写入Excel表格

    公司工作是促进学习的第一生产力!! 一个get请求的接口,我想清楚的在Excel中看到所有的数据! 带着学过H5,php觉得所有代码都很简单的自信,在公司开发的[鼓励]下开始了一上午的斗争 一个小时. ...

  6. css之line-height及图片文字垂直居中

    css虽然没有算法,但还是很神奇的,踩到坑都不知道到底是哪里?看到张鑫旭大佬的博客讲的超级好https://www.zhangxinxu.com 行高line-height用到的频率极高,指一行文字的 ...

  7. javascript 4.1 美术馆

    1.把images文件夹放在html文件同一文件夹子目录下,可以在html中引用图片 例如<a href="images/rose.jpg" title="A re ...

  8. P4168 [Violet]蒲公英

    神仙分块题?其实还是很简单的,res[i][j]表示第i块到第j块的众数,然后再用sum[i][j]表示前i块中j这个种类出现的次数,然后分块瞎搞就行了,感觉我写的十分简洁,好评( //author ...

  9. EF框架引用问题

    安装EF框架时,从NuGet上安装 EF 安装完成以后仍然报错误 这个错误  是因为EF实体数据模型未引用System.data.entity  这个DLL ,记一下以防止以后忘记

  10. 【代码问题】MatConvNet+VS2017编译找不到cl.exe错误

    用vl_compilenn做普通的CPU编译报错: 'cl.exe' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 错误使用 vl_compilenn>check_clpath (li ...