嵌入式C学习笔记

1. 2进制、8进制、16进制的相互转换

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

进制表示

在这里插入图片描述

2. 进制转换方法

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

3. C语言结构体

含义

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

结构体结构

在这里插入图片描述

结构体的其他用法

可以通过typedef来定义结构体,并通过此结构体来定义其他参数
在这里插入图片描述

4. excent用法

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

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

作用

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

5. 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语言常量定义详解

6. 指针(*用法)

1.定义指针需要用到*(如下,定义了应该指针,叫做a)
2.取值的时候需要用到*(如下,需要用到*来代表数据的地址)
3.对于一个定义的指针来说,不用 *代表指针的位置,不是数据在这里插入图片描述

指针变量的引用

    printf("a=%d\n",a); //通过名字,直接访问变量a空间(读取)
    printf("a=%d\n",*p); //通过地址,间接访问变量a空间(读取)
    *p=6
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值