1 - 联合体内嵌结构体初始化赋值

union {
struct {
int i;
float f;
char *p;
};
int o;
} obj3 = { 1, 2.2, "sk", 4, 9 }; printf("struct inlay union: %d, %f, %s, %d\n", obj3.i, obj3.f, obj3.p, obj3.o);

输出:

struct inlay union:  1, 2.200000, sk, 1

说明:

a.  在union中,所有的成员共享同一块内存空间。这意味着,在任何给定的时间,只有一个成员可以持有值。在上述代码中,union的初始化是匿名的,所以是对其第一个成员(一个struct)进行的。因此,o成员并没有被初始化

b.  若要o成员生效,就需要显示初始化,即 obj3 = { 1, 2.2, "sk", .o=4, 9 };

c.  初始化成员个数超过定义的成员个数,则超出的赋值会忽略,但还是建议按个数赋值

2 - C/C++内嵌汇编

Using Assembly Language with C (Using the GNU Compiler Collection (GCC))

__asm__ __volatile__(
"assembly code"
: output operands // 输出操作数
: input operands // 输入操作数
: clobbered registers // 受影响的寄存器列表
);
__asm__ __volatile__(
"str sp,[%0] \n"
"bx lr \n"
:
: "r"(&regs), "r"(sp_saved)
: "r0"
);

说明:

a.  str sp,[%0]:表示将寄存器sp中的值存储到内存地址[%0]中。[%0]是通过第一个输入操作数&regs指定的内存地址。

b.  bx lr:表示执行跳转到寄存器lr所指向的地址,\n 分割汇编指令。

c.  : "r"(&regs), "r"(sp_saved):这是输出操作数和输入操作数的部分。

c.1  "r"(&regs):表示将&regs的地址存储到一个寄存器中,供汇编代码使用。

c.2  "r"(sp_saved):表示将sp_saved的值存储到另一个寄存器中,供汇编代码使用。

d.  : "r0":这是受影响的寄存器列表,表示在内嵌汇编代码执行过程中可能会修改寄存器r0的内

【C/C++】知识点笔记的更多相关文章

  1. Python 入门必学经典知识点笔记【肯定有你不知道的】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...

  2. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  3. Java 多线程与并发【知识点笔记】

    Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...

  4. asp.net、mvc、ajax、js、jquery、sql、EF、linq、netadvantage第三方控件知识点笔记

    很简单,如下: 父页面:(弹出提示框) function newwindow(obj) { var rtn = window.showModalDialog('NewPage.htm','','sta ...

  5. shell 其他杂项知识点笔记

    // 其他杂项知识点 对于普通用户,Base shell 默认的提示符是美元符号$:对于超级用户(root 用户),Bash Shell 默认的提示符是井号# ------- \#!是一个约定的标记, ...

  6. Andrew Ng在coursera上的ML课程_知识点笔记_(1)

    1.Feature Scaling(特征缩放): 如上图所示,x1是房屋面积,x2是房间个数,若不进行特征缩放,则代价函数J的曲线近似为一个瘦长的椭圆(我暂时这么理解,θ1和θ2分别是x1和x2的权值 ...

  7. Js零散知识点笔记

    1.将类数组对象转换为数组 ES5: var arrLike = document.querySelectorAll('span'); var arr = Array.prototype.slice. ...

  8. 【原】web移动端常用知识点笔记

    摘要:因为平时搞移动端的比例多一点,做个小小的总结.虽然网上很多这方面的总结,不过还是想自己也总结一下,适合自己的才是最好的.这样也方便以后自己的查阅 viewport模板——通用 <!DOCT ...

  9. PHP-HTML重要知识点笔记

    1.用frameset.frame和iframe还实现多窗口 2.在图片上利用映射距离usemap来实现按钮跳转.------第8尾集 3.表单必须要有name和value,因为抓包的时候,可发现必须 ...

  10. c#、sql、asp.net、js、ajax、jquery大学知识点笔记

    <table cellSpacing="0" cellPadding="0" width="609" height="470 ...

随机推荐

  1. bash shell笔记整理——less命令

    less命令的作用 less和cat.more最大的差别在于不会一次性加载整个文件,速度比较快!另外less具备翻页功能,可以向上/向下翻页! 语法 less [选项] [文件名] *选项* *使用说 ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (162)-- 算法导论13.1 2题

    二.用go语言,对图13-1中的红黑树,画出对其调用TREE-INSERT 操作插人关键字 36 后的结果.如果插人的结点被标为红色,所得的树是否还是一棵红黑树?如果该结点被标为黑色呢? 文心一言,代 ...

  3. Linux测试磁盘读写性能

    1.安装必要的工具: 确保系统上已经安装了必要的工具,hdparm和fio.使用以下命令来安装它们: sudo yum install hdparm fio -y 2.使用hdparm测试磁盘读性能: ...

  4. SPSC Queue

    在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...

  5. Flutter PageView(轮动图)

    Flutter中的轮动图以及抖音上下滑页切换视频功能等等,这些都可以通过 PageView 轻松实现 PageView常见属性: PageView 的使用 class MyPage extends S ...

  6. 常用的 SQL

    只知道字段名字查找表 SELECT table_name FROM information_schema.columns WHERE column_name = '字段名'; 查看不等于NULL的数据 ...

  7. C#数据结构与算法系列(十七):时间复杂度(下)

    1.常见的时间复杂度 常数阶:O(1) 对数阶:O(log2n) 线性阶:O(n) 线性对数阶:O(nlog2n) 平方阶:O(n^2) 立方阶:O(n^3) k次方阶:O(2^n) 常见的算法时间复 ...

  8. KubeFlow-Pipeline及Argo实现原理速析

    Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序.Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组. 而Kub ...

  9. 浅析AIGC for MMKG

    摘要:AIGC和多模态知识图谱(MMKG)中的知识获取又是怎么实现的呢?他们之间有什么关联呢? 本文分享自华为云社区<GPT-4发布,AIGC时代的多模态还能走多远?系列之四 AIGC for ...

  10. FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?

    摘要:基于数据湖架构,应用效率得以极大提升.经过几年发展,当前集群规模已经达到1000多节点,数据量几十PB,日均处理作业数大概是10万,赋能于180多个总行应用和境内外41家分行及子公司. 本文分享 ...