C语言学习笔记
1 背景
嵌入式开发的时候频繁使用指针数组,以前本科的时候学的都忘了,因此接着学习GD32固件库学习的机会系统的看了一下书,并做出整理
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
更新,主要用来记录嵌入式开发中遇到的c语言知识点
2 查找地址:&运算符
&主要是给出变量的地址
2.1 示例代码
int main() {
int a=10;
printf("%d,%p\n",a,&a);
}
//输出结果
10,0061FF1C
分别输出了变量a的值以及a的地址值
3 指针
指针是c语言最终的概念之一
什么是指针,这里给出一个我认为最好理解的解释,指针是一个值为内存地址的变量,也就是说,指针的值,都是地址。
假设一个指针变量为ptr,则我们可以给变量赋值:
ptr=&pooh;//这里ptr是变量,而&pooh是地址值,是不变的常值
//因为ptr是指针变量
ptr=&bah;
4 间接运算符:*
ptr=&bah;
//利用间接运算符获取bah变量的值
val=*ptr;
//将上面的结合起来看
val=bah;
关于地址运算符*的一般注解:
*+指针名或者地址,表示给出该地址对应的值。
int main() {
int a=10;
int *ptr; //声明指针
int val;
ptr=&a;
val=*ptr;
printf("val=%d,ptr=%d\n",val,ptr);
}
//结果
val=10,ptr=6422292
5 使用指针在函数间通信
#include <stdio.h>
void interchange(int *u,int *v);
int main() {
int a=10;
int b=5;
interchange(&a,&b);
}
// u为地址值,*u为a的值
void interchange(int *u,int *v)
{
int temp;
temp=*u;
//如果
// temp=u;//给的是地址值
*u=*v;
*v=temp;
}
注意这里u的值是&a,所以u为x值,v为b的值,借用中间变量即可完成数值交换;
6 寄存器字节取值
6.1 移位操作
1<<num,将1换位二进制,移动num位,再&,即可得到特定位的数值;