嵌入式C第一次学习

嵌入式C第一次学习,第1张

嵌入式C第一次学习 2进制、8进制、16进制的相互转换

二进制表示:0B
十六进制表示:0X

进制表示

进制转换方法


对于二进制转十六进制一个十六进制等于四位二进制,通过8421码计算

C语言结构体 含义

能够把多个不同的数据集合在一个类型之中(可以是包含多个不同的数据类型)

结构体结构

结构体的其他用法

可以通过typedef来定义结构体,并通过此结构体来定义其他参数

excent用法

extern是C语言中的一个关键字,一般用在变量名前或函数名前,作用是用来说明“此变量/函数是在别处定义的,要在此处引用”,extern这个关键字大部分应该是在变量的存储类型这一类的内容中

外部变量(全局变量)extern----全局静态存储区
标准定义格式:extern 类型名 变量名;

作用

提前使用这个变量,或者引用在其他文件中的变量
参考:extern(外部变量)

const使用方法 作用 可以定义一个不可修改的变量,有其他赋值 *** 作时会报错(一般此种变量会首字母大写用来区分)
const int MaxNum = 100;  //班级的最大人数
const和指针
const int *p1;
int const *p2;
int * const p3;

在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。

const 和函数形参

在C语言中,单独定义 const 变量没有明显的优势,完全可以使用#define命令代替。const 通常用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制。

const 和非 const 类型转换

当一个指针变量 str1 被 const 限制时,并且类似const char *str1这种形式,说明指针指向的数据不能被修改;如果将 str1 赋值给另外一个未被 const 修饰的指针变量 str2,就有可能发生危险。因为通过 str1 不能修改数据,而赋值后通过 str2 能够修改数据了,意义发生了转变,所以编译器不提倡这种行为,会给出错误或警告。

也就是说,const char *和char *是不同的类型,不能将const char *类型的数据赋值给char *类型的变量。但反过来是可以的,编译器允许将char *类型的数据赋值给const char *类型的变量。

这种限制很容易理解,char *指向的数据有读取和写入权限,而const char *指向的数据只有读取权限,降低数据的权限不会带来任何问题,但提升数据的权限就有可能发生危险。

C语言标准库中很多函数的参数都被 const 限制了,但我们在以前的编码过程中并没有注意这个问题,经常将非 const 类型的数据传递给 const 类型的形参,这样做从未引发任何副作用,原因就是上面讲到的,将非 const 类型转换为 const 类型是允许的。

参考C语言const的用法详解,C语言常量定义详解

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5719145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存