c语言
文章平均质量分 71
c语音知识点
入木
抬头看 天空是蓝色的
展开
-
文件- -读写的运用
文件的顺序读写和随机读写- -文本fputec- -在文件上写int main(){ FILE* pf = fopen("test.dat", "w"); if (pf == NULL) { perror("fopen"); return 1; } //写文件 fputc('b', pf); fputc('i', pf); fputc('t', pf); //关闭文件 fclose(pf); pf = NULL; return 0;}打开文件看到bit.原创 2021-07-23 10:47:11 · 125 阅读 · 0 评论 -
文件知识点
两种文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。文件名文件的打开和关闭文件指针每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE(结构体原创 2021-07-22 23:14:27 · 223 阅读 · 0 评论 -
动态内存开辟+柔性数组- -经典题!!
推荐:https://cools hell.cn/articles/11377.htmltest运行完是什么结果1void GetMemory(char* p){ p = (char*)malloc(100);}void Test(void){ char* str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}int main(){ Test(); return 0;}运行不出来原创 2021-07-22 17:00:31 · 99 阅读 · 0 评论 -
动态内存开辟
动态内存分配动态内存开辟常见的错误原创 2021-07-19 21:23:24 · 55 阅读 · 0 评论 -
枚举+联合
动态内存分配原创 2021-07-19 19:32:31 · 87 阅读 · 0 评论 -
结构体的自引用、内存对齐、位段- -结构体和枚举- -图解
目录结构体结构体结构体是一些值的集合,但可以是不同类型的。结构体声明:struct tag{ member-list;} variable-list;struct 关键字 tag为结构体的标签名struct tag结构体的类型member-list成员变量- -可以为多个成员variable-list和b1,b2,b3…,但是b4,b5,b6是全局的//b1为创建了一本书的实体b1,b2,b3为局部变量结构体可以不完全声明匿名结构体类型- -只能用一次,因为不能创原创 2021-06-14 20:57:21 · 172 阅读 · 0 评论 -
memcpy、memmove、memcmp、memset- -字符函数和字符串函数3
目录-字符分类函数isdigit 检查字符是否为十进制数字islower 转换isupper字符转换 tolower内存函数memcpy- -拷贝字符串- -类型任意- -不能处理内存重叠的拷贝memmove- -可以处理内存重叠的拷贝memcmp- -比较内存中的数据memset- -以字节为单位来设置内存isdigit字符转换函数- -tolower内存转换函数1、memcpy- -拷贝的类型可以任意void * memcpy ( void * destinatio原创 2021-06-09 14:19:23 · 233 阅读 · 0 评论 -
qsort--模拟实现对各种类型数据的排序
qsort模拟实现各种排序–不知道类型–运用冒泡排序#include<stdio.h>#include<string.h>struct Stu{ char name[20]; int age;};int cmp_int(const void* e1, const void* e2)//整型{ return *(int*)e1 - *(int*)e2;}int sort_by_age(const void* e1, const void* e2)//整型(结构体原创 2021-06-24 20:32:46 · 94 阅读 · 0 评论 -
strstr 、strtok、strerro、perror- - -> 字符函数和字符串2
2021 6-6目录strstr 在一个字符串中找另一个字符串strtok 切割字符串函数(kmp算法也可以实现)strerror 返回错误码转换为所对应的错误信息,需写printf来打印perror 打印错误信息(包含自定义信息),自身可以打印,不需要printfstrstr- -在一个字符串中找另一个字符串int main(){ char arr1[] = "abbbcdef"; char arr2[] = "bbc"; char* ret = strstr(arr1,原创 2021-06-08 22:56:56 · 189 阅读 · 0 评论 -
strlen strcpy-strncpy strcat-strncat strcmp-strncmp- - ->字符函数和字符串1
6月4日动态内存开辟:p=malloc();申请:malloc();使用释放:free(p );p=NULL;(手动置为空,防止非法访问)int* p=malloc(40);//使用p指向的40个字节的空间原创 2021-06-08 16:34:24 · 146 阅读 · 1 评论 -
指针经典题-往死里学指针5--图解
指针、输出int main(){int main(){ int a[5] = { 1, 2, 3, 4, 5 }; int* ptr = (int*)(&a + 1); printf("%d,%d", *(a + 1), *(ptr - 1)); return 0;} return 0;}解析:(int*)(&a + 1)-&a为int(*)【5】类型,加1还是这个类型,所以强制转换为int*,这样他就是指针了*(a+1)中,a原创 2021-06-04 16:45:39 · 244 阅读 · 0 评论 -
sizeof、 strlen的打印-往死里学指针4
1、sizeof(数组名)- - -数组名表示整个数组,计算的是整个数组的大小&数组名 - - -数组名表示整个数组,取出的是整个数组的地址除此之外:所有的数组名都是数组首元素的地址 sizeof可能进行的运算: 计算地址的大小- -4/8 计算整个数组大小:假如为int ,整型字节4乘于4个元素 1sizeof(a)- -整个数组大小 4*4=16 2不是上述两种情况,a就是数组名就是首元素地址- -4/8 3sizeof(* a)- - -不是原创 2021-06-03 18:37:35 · 538 阅读 · 1 评论 -
函数指针- - -往死里学指针3
2021-05-28一级指针传参:二级指针是存放一级指针变量的地址二级指针传参:传一级指针变量的地址int*arr【100】 --arr-传存放就是一级指针的数组的数组名—首元素的地址–二级指针是存放一级指针变量的地址函数指针typedef对类型重新定义名函数指针数组...原创 2021-05-31 21:03:55 · 73 阅读 · 0 评论 -
数组、指针- -往死里学指针2
*指针大小32位平台–4个字节–32个比特位64位平台–8个字节–64个比特位int main(){ //存放字符 //char ch = 'q'; //char * pc = &ch; //存放字符串 //不可能存放整个字符串,因为就算是64位平台才有8个字节,而这里有10个字符 //本质上是把"hello bit"这个字符串的首字符的地址存储在了ps中 //char* ps = "hello bit"; //char arr[] = "hello原创 2021-05-26 14:22:22 · 93 阅读 · 0 评论 -
指针基础、内存- -往死里学指针1
输出知识点int n=9,n有四个字节float 解引用·访问4个字节double解引用·访问8个字节char解引用·访问1个字节–8个比特位-浮点型和整型的存储和取出来的方式不一样,所以整型n以浮点型打印不会是9.00000当再次以浮点型视角存储的时候,以整型打印的时候也得不到9IEEE754十进制5.5 (小数和小数点后面的数分开来转化,小数为0.5即2^(-1))二进制101.1—>1.0112^2-- – -- — -> 1.01122*(-1)0s原创 2021-05-25 17:55:24 · 152 阅读 · 0 评论 -
操作符经典题图解
57文章1、求两个数二进制中不同位的个数-编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子:1999 2299 输出例子:7方法1::#include<stdio.h>int main(){ int a = 0, b = 0; int c = 0; int k=0; printf("输入两个整数:"); scanf("%d%d", &a, &b); c = a^b; while (c !=0)原创 2021-05-27 11:53:41 · 61 阅读 · 0 评论 -
原反补码的转换
知识点正整数:原码、反码、补码相同负整数:原码、反码、补码要进行计算1、整数在内存中存储的就是补码通过内存看a的地址 ,把内存调为4列,即看到4个字节, 而这四个字节为什么是这样?先根据数值写出32二进制- - -原码1000 0000 0000 0000 0000 0000 1100原码符号位不变,其他位取反----反码1111 1111 1111 1111 1111 1111 0011反码+1-- – -- -补码1111 1111 1111 1111 1111原创 2021-05-25 16:50:43 · 2151 阅读 · 0 评论 -
函数常用题- -c语言基础知识点4
1、memset初始化函数2max函数3 解引用4两数交换传址调用原创 2021-04-25 22:48:59 · 98 阅读 · 0 评论 -
函数递归常用题- -图解- -C语言基础知识点5
函数递归–很容易导致栈溢出1、接受一个整形值(无符号),按照顺序打印它的每一位如:输入:1234 输出 1 2 3 4void print(unsigned int n){ if (n > 9) { print(n / 10); } printf("%d ", n % 10);}int main(){ unsigned int num = 0; scanf_s("%u", &num);//1234 print(num);//printf函数可以打印参数部分数字原创 2021-04-25 23:31:15 · 158 阅读 · 0 评论 -
循环 --c语言基础知识点3
一、if else语句123、求小于10的奇数二、switch case语句三、字符1、在while循环中break用于永久终止循环2、按ctrl+z getchar就读取结束读取的时候输入a然后回车(\n)才能输出a,\n会在缓冲 区下次输入字符的时候读取3、******成功...原创 2021-04-24 16:15:51 · 190 阅读 · 0 评论 -
C语言基础知识点2
多看多想多练**1、~按位取反 **0:0000 0000 0000 0000 0000 0000 0000 0000补码: 1111 1111 1111 1111 1111 1111 1111 1111反码:1111 1111 1111 1111 1111 1111 1111 1110原码:1000 0000 0000 0000 0000 0000 0000 0001原码值为-1原码变为反码:除了符号位,其他位取反反码变为补码:反码加1输出-1整数在内存中是补码原创 2021-04-15 21:35:46 · 292 阅读 · 0 评论