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. 在 IIS 上生成经典 ASP 网站

    场景:在 IIS 上生成经典 ASP 网站 本文档将指导你完成安装 IIS 和配置经典 ASP 网站的过程. 经典 ASP 是服务器端脚本环境,可用于创建和运行动态 Web 应用程序. 借助 ASP, ...

  2. 安装Office

    安装Office 第一步 访问: https://otp.landian.vip/zh-cn/ 点击立即下载 选择: 第二步 打开下载好的zip,解压,启动程序 第三步 选择部署(在这里可以看到电脑已 ...

  3. 春秋云镜 - CVE-2022-28512

    Fantastic Blog (CMS)是一个绝对出色的博客/文章网络内容管理系统.它使您可以轻松地管理您的网站或博客,它为您提供了广泛的功能来定制您的博客以满足您的需求.它具有强大的功能,您无需接触 ...

  4. 小姐姐用动画图解Git命令,一看就懂!

    无论是开发.运维,还是测试,大家都知道Git在日常工作中的地位.所以,也是大家的必学.必备技能之一.之前公众号也发过很多git相关的文章: Git这些高级用法,喜欢就拿去用!一文速查Git常用命令,搞 ...

  5. Vue.js 原理分析

    本文内容提炼于<Vue.js设计与实现>,全书共 501 页,对 Vue.js 的设计原理从 0 到 1,循序渐进的讲解. 篇幅比较长,需要花些时间慢慢阅读,在合适的位置会给出在线示例以供 ...

  6. 关于向上转型以及向下转型、instanceof的一些应用。

    一.前言 在Java编程中,我们常常遇到各种类型转换的情况,尤其是在处理继承关系的类时.本文将深入探讨Java中的向上转型(upcasting).向下转型(downcasting)以及instance ...

  7. 教你处理数仓慢SQL常见定位问题

    摘要:通常在运维监控出现CPU使用率较高.P80/P95指标较高.慢SQL数量上升等现象,或者业务出现超时报错时,优先应排查是否出现慢SQL. 本文分享自华为云社区<GaussDB慢SQL常见定 ...

  8. 细说Python Lambda函数的用法,建议收藏!

    摘要:今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 名称是用于引用或寻址任何实体的约定.我们周围的几乎所有事物都有名字.编程领域也与此一致.但这是必须命名的吗?还 ...

  9. 华为云MVP周峥:气象预报是个技术活,大数据、超算、AI,缺一不可

    摘要:在这样一个关乎民生的行业里,人工智能.大数据.超算这些技术,可发挥的潜力也是无限的,华为云MVP周峥就是其中的技术践行者,他正带领着团队为国内气象行业带来一股温柔而不失力量的春风. 本文分享自华 ...

  10. 如何使用参数化查询提高Cypher查询的性能

    摘要:在DBMS中,参数化查询被视为一种有效预防SQL注入攻击的手段. 本文分享自华为云社区<使用参数化查询提高Cypher查询的性能:以华为云图引擎GES为例>,作者: 蜉蝣与海. 在D ...