
C语言笔记
文章平均质量分 51
李仪筝
窝是魔王!!!!
展开
-
对未命名地址操作的解释
经常会见到如下的操作:#define PINMUX3 *( volatile Uint32* )( 0x01C40000+ 0x0C ) PINMUX3 &= ~0x00600000;这里对 ( volatile Uint32 )( 0x01C40000+ 0x0C )这句单独作出说明,( volatile Uint32* )这句是强制转换符,*的优先级是低于()的,所以会优先和( 0x01C40000+ 0x0C )相结合,强制将该地址转换成一个易变类型,放置编译原创 2021-07-22 11:08:01 · 158 阅读 · 0 评论 -
C语言值传递与地址传递
一、C语言函数的值传递二、C语言函数的地址传递三、局部变量作为函数返回值#include <stdio.h>char *fun(void){ static char buf[] = "helo world!";//这里有没有static会影响输出结果,加上static相当于数据存储在数据区 return buf;}int main(){ char *p; p=fun(); printf("the p is %s\n",p); return 0;}#原创 2021-07-15 22:18:10 · 8477 阅读 · 9 评论 -
函数注册与回调函数以及数组函数、函数数组的几点说明
嘿嘿原创 2021-07-14 20:36:07 · 210 阅读 · 0 评论 -
关于C语言对const类型修饰变量的说明以及变量存储方式的疑问
在C语言中,使用const关键字修饰的变量代表着其不能被改变,是一个常量,那么在C语言中,其实并没有对于其做到一个很好的保护,使用const变量修饰的变量虽然不能通过直接的赋值操作去改变这块内存的值,如果这样做,编译环境会报错提示不能这样做,不能改变一个常量的值,从而使得编译不通过,但是,我们仍然有办法去改变其值,比如指针越界的方法,通过这个方法,我们可以骗过编译器“间接”修改用const关键字修饰的变量存储区域存储的值,代码如下:#include <stdio.h>int main(){原创 2021-07-09 12:48:25 · 423 阅读 · 1 评论