c语言函数参数类似继承的传递
函数的参数如果是一个父结构的指针,
这个结构包含在另一个子结构中,
typedef struct test_node_one test_node_one_t;
typedef struct test_node_two test_node_two_t; struct test_node_one{
int t1;
}; struct test_node_two{
test_node_one_t *to;
char c;
};
然后定义调用函数
#include "t1.h"
void sum(test_node_one_t *t1){
test_node_two_t *n;
n=(test_node_two_t*)t1;
printf("%c",n->c);
}
调用
test_node_two_t txt;
test_node_one_t tx;
txt.c='c';
txt.to=&tx;
sum(&txt);
输出:c
完整代码
#ifndef T1_H_INCLUDED
#define T1_H_INCLUDED typedef struct test_node_one test_node_one_t;
typedef struct test_node_two test_node_two_t; struct test_node_one{
int t1;
}; struct test_node_two{
test_node_one_t *to;
char c;
}; void sum(test_node_one_t *t1); #endif // T1_H_INCLUDED t1.h #include "t1.h" void sum(test_node_one_t *t1){
test_node_two_t *n;
n=(test_node_two_t*)t1;
printf("%c",n->c);
} t1.c #include <stdio.h>
#include <stdlib.h>
#include "t1.h" int main()
{
printf("Hello world!\n");
test_node_two_t txt;
test_node_one_t tx;
txt.c='c';
txt.to=&tx;
sum(&txt);
return ;
} main.c
c语言函数参数类似继承的传递的更多相关文章
- Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...
- C语言函数参数的传递详解
一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){ int tmp; ...
- C语言函数参数压栈顺序为何是从右到左?(从左向右的话,碰到printf的会陷入死循环)
上学期学习了汇编语言,并在操作系统实验中使用了汇编+C语言混合编程,中间也了解了一些C语言与汇编语言的对应关系. 由于汇编语言是底层的编程语言,各种函数参数都要直接控制栈进行存取,在混合编程中,要用汇 ...
- C语言 函数参数不确定时 需要用到va_start和va_end函数
1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...);void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我 ...
- C 语言函数参数只能传指针,不能传数组
今天被要求编写一个C/C++冒泡算法的程序,心想这还不是手到擒来的事儿,虽然最近都是用Javascript程序,很少写C/C++程序,但是好歹也用过那么多年的C语言: 首先想的是怎么让自己的代码看上去 ...
- lr参数与C语言函数参数的区别
C变量不能再lr函数中使用: c变量必须定义在lr函数之前: LR参数可以在LR函数中直接当做字符串使用. LR参数是lr自己封装的一个钟对象, LR参数的表达方式:{ParamName}
- C语言函数参数既做出参又做入参的代表
//使用fcntl对文件进行加锁 #include "stdio.h"#include "unistd.h"#include "fcntl.h&quo ...
- C语言通过函数参数不能带出动态内存的例子。
实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...
- c语言中函数参数入栈的顺序是什么?为什么
看到面试题C语言中函数参数的入栈顺序如何? 自己不知道,边上网找资料.下面是详细解释 #include <stdio.h> void foo(int x, int y, int z){ ...
随机推荐
- 商品规格,自定义SKU类型
<html> <head> <script type="text/javascript" src="http://xoxco.com/exa ...
- linux中的baff/cache占用大量内存,如何清理?
执行命令echo 3 > /proc/sys/vm/drop_caches,即可清空buff/cache 参考http://blog.csdn.net/kevins_lee/article/de ...
- xlistview长按
//XListView的长摁事件 xlistview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @O ...
- Buaa菜鸡从今天好好学打码,好好学数学,好好学英语,好好打篮球,好好锻炼,好好吃饭,好好... 好好找女朋友!
新链接: https://iamparasite.github.io/
- vue项目打包后的资源路径问题
最近做的vue项目,本地测试完成后,build上线,却发现了文件路径问题,提示各种诸如js,css等资源找不到的错: 正确解决方式有两种,一种是绝对路径配置,详细可以网上查,个人推荐第二种相对路径,这 ...
- js入门 关于js属性及其数据类型(详解)
1. js的本质就是处理数据.数据来自于后台的数据库. 所以变量就起到一个临时存储数据的作用. ECMAScript制定了js的数据类型. 数据类型有哪些? 1. 字符串 String 2. 数字 ...
- java基础(二):java内部类
内部类像寄生虫一样生存在其他类[外部类]的内部.定义在类的内部的类叫内部类,它缩小了可见性.根据内部类定义结构的不同,可以把内部类分为 成员内部类和局部内部类.成员内部类定义的地方和外部类的成员变量和 ...
- java8_api_nio
NIO-1 nio的概念 Buffer的属性 Buffer中数据的读写 用以提高IO处理数据的性能问题,之前io里的单位是Byte(java程序向流中写入byte或相反 ...
- 当yum安装出现Error: Package: glibc-headers .....时
环境 CentOS Linux release 7.4.1708 (Core) 当使用yum源安装时,出现以下报错 Error: Package: glibc-headers-.el7_4..x8 ...
- netty原理解析
netty主要采用的是reactor模式(事件)驱动模型,以下主要对reactor进行总结: C/S架构可以抽象为如下模型: C就是Client(客户端),上面的B是Browser(浏览器) S就是S ...