栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础

前言

对工作中使用到的C语言语法进行整理,部分内容来自参考博文。

后期不断更新和丰富内容吧。

1 语法 1.1 结构体

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”

struct Data
{
   int a,b,c;
};              
struct Data * p;
struct Data A = {1,2,3};
int x;
p = &A ; 
x = p->a;
         

对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data 
{
   int a;
   struct Data * next;
};
…………
main()
{
   struct Data * p;
  ……
   p = p->next;
}

1.2 寄存器bit操作

将多位宽的寄存器GPIOx_CRL某一bit (第n bit , n 从0起始)置1,采取方法:

GPIOx_CRL = GPIOx_CRL | (0x01 << n)    //n从0开始
GPIOx_CRL = GPIOx_CRL | (0x01 << 0)    //将GPIOx_CRL[0]置1
GPIOx_CRL = GPIOx_CRL | (0x01 << 3)    //将GPIOx_CRL[3]置1

将多位宽的寄存器某一bit (第n bit , n 从0起始)置0,采取方法:

GPIOx_CRL = GPIOx_CRL & (~(1 << n))  	

//解析,若GPIOx_CRL = 1001 1111,n=2,
(1<<2) 得二进制数:0000 0100
取反是:1111 1011
GPIOx_CRL = (1001 1111) & (1111 1011) = 1001 1011

例如,需要设置第0位bit=1时,不能简单的设置为:GPIOx_CRL=0x01  ,这样的方法会使得低配置寄存器GPIOx_CRL的其它比特位都置为0。

 对于二进制位操作来说:  

不管该位原来的值是0还是1,它跟0进行&运算,得到的结果都是0,而跟1进行&运算,将保持原来的值不变;  

不管该位原来的值是0还是1,它跟1进行|运算,得到的结果都是1,而跟0进行|运算,将保持原来的值不变。 

参考
1、作者博文
【转】C语言中 -> 是什么意思?
C语言位操作 - bit 、byte的清零,置1,提取,判断

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号