![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
嵌入式软件和硬件
有趣才精彩,而不是精彩才有趣
展开
-
LeetCode刷题笔记详细记录 题目3-10
3、查找无重复字符串的最大子串错误类型:变量初始值需要讨论,多个if else 需要注意对应关系int lengthOfLongestSubstring(char* s) { int i,j,k; int s_len=1;//【此处错误,存在考虑不周全】 //int temp_len=1; for(i=0;s[i] != '\0';i++) { ...原创 2018-11-20 09:36:39 · 213 阅读 · 0 评论 -
C语言常用的字符串处理函数归纳
strcat: char *strcat(char *des, const char *src);//要求des有足够的空间strncat: char *strncat(char *des, const char *src, int n);//src前n个字符追加到desstrchr char *strchr(const char...原创 2019-06-05 09:36:49 · 185 阅读 · 0 评论 -
__attribute__((aligned())) 和#pragma pack(1)
typedef struct Student_t{ int age; char c;}__attribute__((aligned (64))) Student;//影响结构体自身的对齐和大小,每个结构体单独占用64字节 ,不影响其中结构体中元素的对齐 typedef struct Node_t{ int a; char c;} Node __attribute__((a...原创 2019-06-03 20:20:15 · 1590 阅读 · 0 评论 -
C语言标准输入输出库函数和缓冲区
1、scanf()函数:int scanf(const char *format, ...);返回值:成功匹配的个数的参数个数(一个%s算一个)【注】scanf输入字符串的时候且第一个格式化参数不是字符类型%c的时候,当空格、tab、\n位于最前面的时候,自动去除。同时多个数据同时输入的时候,以空格、tab、\n为分隔符。最后的\n继续保留在缓冲区。【补充】如果scanf输入得到一...原创 2019-05-31 16:38:28 · 1241 阅读 · 0 评论 -
C语言中变量的存储地址
1、局部变量分配的地址与其定义的相对位置没有关系,与改变量的实际使用顺序有关。(实际使用,存取该变量,或取地址,此时才给变量分配内存)2、数组存储的字节格式:低位存储在低地址。地址是增长的。?...原创 2019-05-24 11:25:07 · 3237 阅读 · 0 评论 -
const变量存储内存区域 详解
const int b=1;//静态存储区,的只读页int c = 2;//静态存储区,读写页int main(){ const int i=10;//在程序中不能修改,实际上可以用指针简介修改,也就是说没有在内存层面保护,只是在编译期间不能修改该变量。 int *p=(int*)&i; printf("p = %p\n",p); printf("&p = %p\...原创 2019-05-24 09:30:41 · 8464 阅读 · 3 评论 -
数据转换字节扩展 char c=128
char c=128;printf("%d",c);【将C语言代码汇编,可以看到128转换成了-128】C语言char类型的表示范围-128~127。128:补码10000000b装载到寄存器exa中:属于有符号数扩展,按照符号位填充高位字节。由于 128最高为是1,为负数,扩展为int的-128为11111111 111111 111111 1000000,即0xfff...原创 2019-05-30 21:37:02 · 1744 阅读 · 0 评论 -
华为嵌入式软件笔试题
1、输出2,5 【注意指针指向的类型,操作指针的时候才知道指针移动的字节】int main(){ inta[5]={1,2,3,4,5}; int *ptr=(int*)(&a+1);//a指向int类型,&a指向数组类型 printf("%d,%d",*(a+1),*(ptr-1));}2、死锁产生死锁的必要条件:(1)互...原创 2019-05-30 18:43:42 · 6095 阅读 · 10 评论 -
函数指针 函数名
int fun2(int a,int(*)(int));int fun(int a){ printf("%d\t",a); return 1;}int main(){ int (*ptr)(int); ptr = fun; fun2(55,fun); ((int(*)(int))0x004012f0)(5); ((int(*)(int))&fun)(6); ...原创 2019-05-30 14:58:42 · 174 阅读 · 0 评论 -
C语言数据类型基础知识
理论上来讲数据类型的字节数由编译器决定(占多少位由编译器在编译期间说了算)。变长数组:必须为自动存储类型,这意味着必须在函数内部或作为函数参量申明。并且申明的时候不能初始化。...原创 2019-05-12 19:35:12 · 111 阅读 · 0 评论 -
volatile关键字详解
转载:https://www.cnblogs.com/reality-soul/p/6140192.html.volatile的本质:1> 编译器的优化在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致。当变量在...转载 2019-05-21 20:31:52 · 101 阅读 · 0 评论 -
源码、反码、补码 的总结
1、正数不区分源码、反码、补码 例如:7:000001112、负数:源码:符号位+绝对值;例如:-7:10000111;反码:符号位+绝对值取反:例如:-7:11111000;补码:反码+1:例如:-7:11111001【此处1】补码的意义:8位的补码:例如-7的补码:256-7=249=11111001【此处2】和【此处1】相同。。用这种方法计算补码不易出错补码相加:...原创 2018-11-24 19:07:44 · 258 阅读 · 0 评论 -
C语言程序运行的地址空间
1、转载参考:https://www.cnblogs.com/wuchanming/p/4339770.html转载 2019-03-09 10:41:02 · 796 阅读 · 0 评论 -
编程中的负数取余问题
转载:http://ceeji.net/blog/mod-in-real/1、余数可能是负数,不能使用 x%2==1 判断整数x是否是奇数!!!,应该使用 x%2 != 0判断x不是偶数2、结论对于任何同号的两个整数,取余结果没有争议,所有语言的原则是使商尽可能小对于两个异号的两个整数,C/C++/JAVA 的原则是尽可能使商大,Python等新语言的原则是使商尽可能小...转载 2019-03-06 16:44:35 · 531 阅读 · 0 评论 -
C语言知识巩固
1、scanf函数:双引号内:“只保留输入控制符”。多余的字符都需要按原样输入,增加麻烦。2、int* a,b; 【特别注意】这种情况,a是指针,b不是指针。3、NULL的值:0x00000000 ,一个不能被用户使用的地址。4、free()函数:malloc两次只free一次会内存泄漏;malloc一次free两次肯定会出错。也就是说,在程序中malloc的使用次数一...原创 2019-01-25 08:44:39 · 233 阅读 · 0 评论 -
scanf()函数 getchar()函数 gets()函数输入字符和字符串回车问题
1、标准输入函数读取的数据来自缓冲区,缓冲区需要按下回车,用户进程才可以读取缓冲区的数据2、scanf函数特点:【转载】https://www.cnblogs.com/1228073191Blog/p/7696324.html补充:1、scanf()函数允许把普通字符放在格式字符串中,除了空格以外输入要和格式字符串准确匹配【不建议放任何非格式符号在里面】2、scanf()函数返...原创 2018-11-27 19:50:23 · 2118 阅读 · 0 评论 -
leetcode 11-20
简洁笔记,只贴上少数难题和通不过的代码11、盛水最多容器方法1:暴力法,所有的可能性都算一遍,比较一次方法2:一层循环,每次移动小的,为了找更大的12、整数转罗马数字把0-3999分好段,考虑临界情况,字符串加'\0’即可。从高位开始13、罗马数字转整数从低位开始,逆向14、最长公共前缀把临界情况单独拿出来,不进入循环,可以提高速度,所以leetcode的速...原创 2018-12-02 22:08:24 · 341 阅读 · 0 评论 -
C语言--字符串常量
相同的字符串常量,整个程序中只有一份,所有指针指向该字符串。区别于用数组定义的字符串。原创 2019-07-02 15:58:27 · 797 阅读 · 0 评论