c语言
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
如何将数的第n位 置0 或者 置1,查询第n位是否为0
一 先 让 1 向左移 n-1位得到 a;二 如果置1 那么就 数 | a;三 如果置 0 那么 就 数 &(~a)原创 2019-08-07 09:00:35 · 1601 阅读 · 1 评论 -
c语言 互相引用extern
两个文件可以相互引用另一个文件的函数,编译不会出问题。原创 2022-12-15 00:00:41 · 248 阅读 · 0 评论 -
c语言实现二进制文件拷贝
参考:C语言实现文件拷贝(fread和fwrite)原创 2022-12-05 22:39:50 · 447 阅读 · 1 评论 -
二叉树总结
D 5号节点的左子树高度为3,右子树高度为1,两边高度之差绝对值为2,违反了规则3,不是平衡二叉树。规则2:每个节点的值比它的左子树所有的节点大,比它的右子树所有节点小(有序)C 7号节点属于5号节点的左子树范围却比5大,违反规则2,不是平衡二叉树。规则3:每个节点左子树的高度与右子树高度之差的绝对值不超过1。B 5号节点有三个孩子,违反规则1,不是平衡二叉树。规则1:每个节点最多只有两个子节点(二叉)...原创 2022-08-29 01:06:55 · 293 阅读 · 0 评论 -
数据类型大小 printf()函数输出数据格式汇总
d,十进制整型;------->有符号的十进制整型%ld,十进制长整型;%3d,位数为3,不足在左边补空格;%-3d,位数为3,不足在右边补空格;(-可以理解为非,默认是在左边加0和空格的,-表示不是在左边,那就是在右边了?)%05d,位数为5,不足的在左边补0 //不可能在右边补0%u,无符号十进制整型;%lu,无符号十进制长整型;%o,无符号八进制整型;//形如012%lo,无符号八进制长整型;%x,无符号十六进制整型;//形如0x12%X,无符号十六进制整型大写;...转载 2022-08-22 23:20:47 · 1136 阅读 · 0 评论 -
c语言 寄存器技巧 (struct 和 union)
C语言 | 位域的使用详解测试代码原创 2022-07-11 23:46:21 · 560 阅读 · 0 评论 -
不定长参数宏,printf默认打印文件名、函数名和行号
#include <stdio.h>#define PRTINT_LOG(fmt,args...) do{printf("FILE:[%s] FUNC:[%s] LINE:[%d]:"fmt,__FILE__,__FUNCTION__,__LINE__,##args);}while(0);int main(int argc,char *argv[]){ char a[] = "here is a test"; PRTINT_LOG("%s\r\n",a); r转载 2022-03-23 22:35:59 · 385 阅读 · 0 评论 -
strncpy 跟 memcpy 的区别
**strncpy 跟 memcpy 的区别:**strncpy 具有 置 0特性#include<stdio.h>#include<stdlib.h>#include <string.h>int main(){ char *a="abcdefg"; //len = 7 char b[10] = {'1','1','0','1','1','1','1','1','1','1'}; char c[10] = {'1','1','0','1','原创 2022-03-21 23:16:45 · 369 阅读 · 0 评论 -
memset 的问题
memset(a,0,sizeof(a));//调用函数初始化a[]={0};//数组的初始化**注意:**1:其实这个没有啥区别的,你在源码中写上。a[] = {0};不需要再memset(a,0,sizeof(a));2#include<stdio.h>int main(){ char a[10]={0}; if(a[1] == '\0') printf("a[1] is NULL\n"); if(a[1] == 0) printf("a原创 2022-03-19 12:10:58 · 191 阅读 · 0 评论 -
memstr 从内存找字符串
#include<stdio.h>char* memstr(char* full_data, int full_data_len, char* substr){ if (full_data == NULL || full_data_len <= 0 || substr == NULL) { return NULL; } if (*substr == '\0') { return NULL; } int s原创 2022-03-19 09:51:48 · 1220 阅读 · 0 评论 -
c++ 调用 c语言
mian 文件#include <iostream>#include"test.h"using namespace std;//在C++中想调用C中的函数//extern "C" void show(); //一个一个函数调用的方法int main(){ show(); return 0;}test.h 文件(头文件把c语言函数包到宏里面,头文件 #include <stdio.h>可以放进去,也可以拿出来)#ifndef T原创 2021-06-18 21:23:29 · 418 阅读 · 0 评论 -
volatile关键字
volatile 关键字(keywords)是一种类型修饰符(Type Qualifiers),volatile 的英文翻译过来是 “易变的” 。用volatile 声明类型变量的时候,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用 volatile 进行声明,则编译器将对所声明的语句进行优化。即 volatile 关键字影响编译器编译的结果,用 volatile 声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。个人感觉 如果cp原创 2021-03-28 12:14:00 · 145 阅读 · 1 评论 -
linux_api 错误: errno perror strerror
1 首先 perror 函数比较简单。头文件 <stdio.h>所以只需要直接使用就行了 1 #include <stdio.h> 2 3 int main () 4 { 5 FILE *fp; 6 7 fp = fopen("file.txt", "r"); //这个文件没有 8 if( fp == NULL ) { 9 perror("Error: "); //只需添加这一句 10原创 2021-03-20 14:20:54 · 133 阅读 · 0 评论 -
宏定义使用
1 需要很多 if 进行判断,感觉用起来不太好看所以#include<stdio.h> #define MWE(A,B) {if(A) {B}}int add(int a,int b){ int c= a+b; printf("value is %d\n",c);}int main(void){ MWE(1,printf("hello\n");); MWE(0,add(2,5);); MWE(1,add(5,5);); }但是感觉原创 2021-03-01 22:46:53 · 100 阅读 · 0 评论 -
enum类型:@多个类型可以是同一个类型,@自动赋值的规律
1 #include <stdio.h> 2 3 enum DAY 4 { 5 MON=1, TUE=1, WED=3, THU, FRI, SAT=4, SUN 6 }; 7 8 int main() 9 { 10 enum DAY day; 11 day = MON; 12 printf("%d\n",day); 13 day=TUE; 14 printf("%d\n",day); 15 ..原创 2020-08-29 10:27:49 · 494 阅读 · 0 评论 -
static 问题
static 修饰的变量是可以#include<stdio.h>int main(){ static int a=1; a=2; printf("a is %d\n",a);}但是如果不会重复执行 static int a=0; 因为遇到声明会直接跳过!include<stdio.h>int fun(){ static int a=0; a=a+1; printf("a is %d\n",a);}int main()原创 2020-07-21 13:48:35 · 223 阅读 · 0 评论 -
M4 调试单元 DWT测试 某个函数运行时间
初始化变量 uint32_t * DWT_CONTROL=(uint32_t *)0xE0001000; uint32_t * DWT_CYCCNT=(uint32_t *)0xE0001004; uint32_t * DEMCR=(uint32_t *)0xE000EDFC; volatile uint32_t vtpai_process_start=0; volatile uint32_t vtpai_process_end=0; volatile uint32_t vtpai_原创 2020-06-29 16:01:01 · 403 阅读 · 0 评论 -
结构体的函数指针成员使用
1 #include<stdio.h> 2 struct qwer 3 { 4 int a; 5 void (*b)(struct qwer); //定义函数指针变量 6 }; 7 void myprintf(struct qwer a) 8 { 9 printf("myprintf is %d\n",a.a); 10 } 11 int main() 12 { 13 struct qwer a={1,myprintf}; ..原创 2020-06-06 13:19:13 · 837 阅读 · 0 评论 -
c语言通过类型转换取值
1#include<stdio.h>int main(){ int a[2]={0xf00f,0x0ff0}; printf("a[0] is %d,a[1] is %d\n",a[0],a[1]); printf("is %d\n",(*(unsigned char *)a)); printf("is %d\n",(*(unsigned short *)a)); }打印注意: 要加 unsigned 修饰intern@ubuntu:~/work3/m原创 2020-06-03 11:55:49 · 184 阅读 · 0 评论 -
使用结构体成员选择 . 还是 ->
typedef struct // 定义一个结构体类型:DATA{ char key[10]; // 结构体成员:key char name[20]; // 结构体成员:name int age; // 结构体成员:age}DATA; DATA data; // 声明一个结构体变量DATA *pdata; // 声明一个指向结构体的指针 // 访问数原创 2020-05-09 17:48:59 · 490 阅读 · 0 评论 -
typedef struct abc *e 啥意思?
就是定义 struct abc 的指针类型#include<stdio.h>struct abc{ int a; char b; int c; char d;};typedef struct abc *e;typedef struct abc f;int main(){ printf("size i...原创 2020-05-08 12:58:02 · 371 阅读 · 0 评论 -
字符串常量与字符数组
首先我认为c语言没有字符串变量但是有字符串常量char *a 应该认为是个char类型指针char *a=“hello”;字符串常量char a[]=“hello”; 字符串数字区别 1 #include<stdio.h> 2 int main() 3 { 4 5 char *a="hello"; 6 printf(...原创 2020-05-07 20:15:04 · 374 阅读 · 0 评论 -
值传递经典问题
#include <stdio.h>void swap(int a,int b){ int temp=a; a=b; b=temp;}int main(){ int a=4,b=5; swap(a,b); printf("a = %d ,b = %d\n",a,b); return 0;}交换两个数的值!很显然无...原创 2020-05-07 20:01:05 · 210 阅读 · 0 评论 -
c语言数组问题
1 #include<stdio.h> 2 int main() 3 { 4 int a[3]={1,23,0,}; 5 printf("printf is %d\n",a[3]); 6 }即使int a[3]={1,23,0,};数组后面 多添加一个 ,也没有关系原创 2020-05-04 14:11:08 · 217 阅读 · 0 评论 -
while 死循环的三种方式
while(1) { ; //加 一个分号 } while(1) { }while(1);这个比较常见static void SPIFlashWaitWhenBusy(void) //等待状态寄存器变为0{ while (SPIFlashReadStatusReg1() & 1);}...2020-04-23 23:01:43 · 15140 阅读 · 0 评论 -
linux c的结构体赋值方法
#include<stdio.h>typedef struct al_data{ int a; int b; int c; char ch;}al_data;struct al_data ad ={ 1, 3, 9, 'A',};struct al_data ad2 ={ .a = 2, ...原创 2020-03-28 07:16:21 · 1163 阅读 · 1 评论