C语言重点知识
贪玩老学长
当你觉得数学很重要的时候,你就是真正的科研人员了。
我是平头哥,只想打死各位或者被各位打死。
--菜鸟祥哥
展开
-
链表学习加深
四个区#include<stdio.h>#include<stdlib.h>int a; //全局变量的未初始化,默认是0;而局部变量不会,因此,局部变量为未初始化就会报错int main(void){ //int b; printf("a = %d\n",a); system("pause"); return 0;}#include<stdio.h>#include<stdlib.h>int a; //全局变量的未初始化原创 2020-10-19 16:14:34 · 98 阅读 · 0 评论 -
C++第1讲:综述C++
看到这里,你还想搞C++吗?哈哈哈,试试看,应该不会掉头发吧。在C++语言中,随用随定义在C语言中,重复定义多个同名的全局变量是合法的。在C++中,不允许定义多个同名的全局变量。在C语言的struct定义一组变量的集合,C编译器并不认为这是一种新的类型在C++中的struct是一个新的定义声明左值和右值得当左值的条件是,要有内存空间。在C++中三目运算,可以当左值。const常亮是由编译器处理的,提供类型检查和作用阈检查宏定义由预处理器处理,单纯的文本替换。C++枚举,.原创 2020-10-06 22:32:48 · 124 阅读 · 0 评论 -
C语言第16题:单项链表的实现
原创 2020-10-06 20:46:20 · 88 阅读 · 0 评论 -
C语言第15题:二分查找+二分递归查找 终于知道函数封装的好处了
今天又回来学习啦,预计今天完成C的学习,晚上开始学习C++和大家简单唠唠嗑,因为现在在秋招,我一开始在做图像处理相关的,当初为了偷懒,不想学习C\C++,选择了python学习,学习过python的小伙伴,一定知道,这个是比较简单的,很多已经被做成了函数和库,可是去找图像相关的工作,对学历、算法要求还有不少,于是找工作很不顺利(当然也是自己学的不精),于是准备转找嵌入式相关的,因为我也有1-2年的嵌入式软件相关的编程,但是忘得差不多了,于是从C开始捡。正在学习的小伙伴也要好好的准备吧,不然以后找工作就很原创 2020-10-06 17:04:01 · 196 阅读 · 0 评论 -
C语言第14题:数据结构冒泡与选择(文件操作明天学习分享)
算法:有穷性确定性可行性数据结构对于面试的时候问的比较多,因此这里需要进行学习,仅仅用C语言进行讲解,对于其他语言都是一样的,只不过是编程的代码不一样而已。#include<stdio.h>int main(void){ int s[10] = { 10,23,34,32,42,12,9,56,21,8 }; int i; printf("排序前:"); for (i = 0; i < 10; i++) { printf("%d ",s[i]); } pr原创 2020-10-05 22:34:06 · 99 阅读 · 0 评论 -
C语言第13题:枚举与typedef + typedef 和define 区别
#include<stdio.h>#include<string.h>#include<stdlib.h>#pragma warning(disable:4996) //注意这一句的使用,可以解决C语言中出现的一些兼容性问题enum A{ red, black, yellow //其实就是整数,从0开始0,1,2,3,4,5,6...};int main(){ // yellow = 20;//美剧是常亮,值是不能改变的 int color.原创 2020-10-04 14:59:30 · 144 阅读 · 0 评论 -
C语言第12题:联合体的定义和使用
//同一个时刻只使用一个成员,就没必要开辟那么多内存空间去储存结构体变量#include<stdio.h>#include<string.h>#include<stdlib.h>#pragma warning(disable:4996) //注意这一句的使用,可以解决C语言中出现的一些兼容性问题union A{ int a; char b;};int main(){ union A a; a.a = 10; a.b = 20; pri原创 2020-10-04 14:34:05 · 832 阅读 · 0 评论 -
C语言第10题:结构体知识 +结构体作函数参数(使用指针提高效率)
注意上面的struct stduent{char name[100];int age;}只是定义了一种类型,并不是变量,正式定义变量是在下面开辟空间的时候不能直接使用结构体类型的数组进行->操作,->是针对指针类型而言的。定义的是指针类型的char *name;所以在只是一个地址信息,在使用的时候需要先用malloc进行内存分配才可以进行使用这里有一个重点内容,就是结构体使在堆区开辟的,然后对于结构体里面的成员再进行堆去分配,那么就出现了嵌套的使用情况,那么在释放的时候.原创 2020-10-04 12:30:38 · 919 阅读 · 0 评论 -
C语言第11题:结构体数组的定义与使用 + 结构体数组排序
注意:一下赋值是不能使用的但是在结构体中是可以直接进行赋值操作的st[1] = st[2];printf(“姓名 = %s, 年龄 = %d, 班级 = %s, 成绩 = %d\n”,st[1].name,st[1].age,st[1].classes,st[1].score);结构体使可以进行互相赋值的struct A a1 = { “hello” };struct A a2 = {“c”};a2 = a1;#include<stdio.h>struct E{ ch原创 2020-10-04 10:16:39 · 1373 阅读 · 0 评论 -
C语言第9题:堆、栈和内存映射 ( malloc、calloc、realloc的区别)
区别:malloc、calloc、realloc的区别(1)函数malloc不能初始化所分配的内存空间,而函数calloc能.如果由malloc()函数分配的内存空间原来没有被使用过,则其中的每一位可能都是0;反之, 如果这部分内存曾经被分配过,则其中可能遗留有各种各样的数据.也就是说,使用malloc()函数的程序开始时(内存空间还没有被重新分配)能正常进行,但经过一段时间(内存空间还已经被重新分配)可能会出现问题.(2)函数calloc() 会将所分配的内存空间中的每一位都初始化为零,...原创 2020-10-03 21:30:59 · 320 阅读 · 0 评论 -
C语言第8题:变量作用阈
#include<stdio.h>int a = 20;//全局变量void test1(){ int a1 = 0; int a = 100;}void test2(){ int a2 = 100;}int main(){ int a = 0; a = 10; system("pause"); return 0;}文件中的变量extern int a ;出现在括号外面的变量就是全局变量不写auto变量,C语言默认是auto一般情况下,代码块原创 2020-10-03 20:56:24 · 123 阅读 · 0 评论 -
C语言第7题:指针总结(两张表格重点***)
字符拷贝拷贝的时候需要注意没有重叠区域原创 2020-10-03 20:18:56 · 133 阅读 · 0 评论 -
C语言第6题:指针与memset函数
函数指针:#include<stdio.h>int add(int a,int b){ return a + b;}int max(int a, int b){ return a > b ? a : b;}int main(void){ int(*p)(int, int);//定义一个指向函数的指针 int status = 0; printf("请输入你要计算的函数1:max;2:add"); scanf_s("%d",&status);原创 2020-10-03 20:05:56 · 313 阅读 · 0 评论 -
C语言第6题:保护函数参数以及返回值为指针的函数(***重点)
通过函数的指针参数可以间接的实现形参修改实参的值形参传递不能修改实参的值#include<stdio.h>void test(int n){ n++;}int main(void){ // 经常用指针访问数组 int i = 100; test(i); printf("i = %d\n",i); system("pause"); return 0;}而使用指针进行传递就不会出现这种情况了,就可以进行实参的修改#include<stdio.h>.原创 2020-10-03 18:00:55 · 286 阅读 · 0 评论 -
C语言第5题:数组指针指向多维数组
这两句是等效的int main(void){ int buf[2][3] = { {1,2,3},{4,5,6} }; //int*p[3];指针数组 int(*p)[3];//定义了一个指针,指向int [3]这种数据类型,指向二位数组的指针 p = buf;//p指向了二维数组中的第一行 p++;//指向了第二行 printf("%d\n",sizeof(p)); printf("%d,%d\n",p,p+1); //位移了1 * sizeof(int [3]) system.原创 2020-10-03 15:53:35 · 395 阅读 · 0 评论 -
C语言第4题:指针数组以及多级指针
#include<stdio.h>#include<string.h>int main(void){ int *a[10];//定义了一个指针数组,一共有10个成员,其中每一个成员都是int *类型 printf("%d,%d\n", sizeof(a),sizeof(a[0])); double *b[10];//定义了一个指针数组,一共有10个成员,其中每一个成员都是double *类型 printf("%d,%d\n", sizeof(b), sizeof原创 2020-10-03 15:14:21 · 269 阅读 · 0 评论 -
C语言第3题:指针第汉字字符串进行逆序
主要是将汉字字符进行逆序输出与英文不同的是,一个汉字占有两个字符。所以处理的时候需要注意思路其实就是讲最后的一个地址给第一个,倒数第二个给第二个,以此类推。#include<stdio.h>#include<string.h>int max_res(int *s){ char str[100] = "我是一个好孩子"; short *str_start = &str[0]; short *str_end = &str[strlen(str) -.原创 2020-10-03 13:44:05 · 560 阅读 · 0 评论 -
C语言第2题:指针和数组的关系
可以看到p/p1与p2相差为4#include<stdio.h>int main(void){ int buf[10]; int *p = buf; int *p1 = &buf[0]; int *p2 = &buf[1]; printf("%d,%d,%d\n",p,p1,p2); //可以看到p/p1与p2相差为4 system("pause"); return 0;}#include<stdio.h>int main(void)原创 2020-10-03 13:27:55 · 271 阅读 · 0 评论 -
C语言第1题:用指针判断字符串的长度并合并两个字符串
#include<stdio.h>int main(void){ char s1[100] = "hello"; char s2[100] = "world"; char *p1; p1 = s1; int len = 0; while (*p1) { p1++; //注意这一个一定需要,因为指针开始指向首地址,所以所对应的不为0,如果指针不移动 //while永远为真 len++; } printf("len=%d\n",len); /.原创 2020-10-03 10:49:53 · 420 阅读 · 0 评论 -
知识点一:C语言产生随机数
#include<stdio.h>#include<time.h>// rand是伪随机数产生器,每次调用rand产生随机数都是一样的// 如果调用的是随机数// 只要保证每次调用的是不同的void main(void){ time_t tm = time(NULL); srand(tm); int i = 0; for(i = 0; i < 10; i++) { int value = rand(); //产生随机数 printf("%d\n原创 2020-09-28 08:24:10 · 140 阅读 · 0 评论 -
C语言操作去除空格
#include<stdio.h>void main(void){ char s[100] = { " hello C++ " }; printf("(%s)\n",s); int len = 0; while (s[len++]); len--; printf("%d\n",len); for (int i = len-1; i >= 0; i--) { if (s[i] != ' ') { s[i + 1] = 0;原创 2020-09-28 08:06:43 · 5064 阅读 · 0 评论 -
C语言结构体使用
#include<stdio.h>typedef int ABC;// 全局结构体使用struct book{ char num[100]; char title[100]; char author[100];};typedef struct book zhx;void main(void){ zhx books[10]; strcpy(books[0].num, "第1本"); strcpy(books[0].title, "人性的弱点"); strcp原创 2020-09-26 21:14:08 · 111 阅读 · 0 评论 -
指针数组,数组指针,指针函数(模拟计算器+,-,*,/)
指针数组和数组指针指针数组的实质就是一个数组,这个数组中存储的内容全部是指针变量数组指针的实质是一个指针,这个指针指向的是一个数组。(1) int *p[]; int(*p)[b];int *(p[b]);(2) 一般规律:int p(p是一个指针); int p5总结:定义一个符号时,关键在于:首先要搞清楚你定义的符号是谁(第一步:找核心)其次再次看谁和核心最近,谁和核心结合(第二...原创 2019-12-06 14:43:50 · 183 阅读 · 0 评论 -
指针数组综合使用(函数调用)
这个是参考谭浩强的C语言写的,并对该程序进行充分解释,因为最近我需要用到这块的综合使用,因此需要对这些内容进行详细解读,可能有很多地方没有读懂,大家可以一起看看。**题目:就是对一组字符串进行排序,采用冒泡法进行,并要求使用指针和调用函数,**后买你需要用到从文件中读取数据,然后进行字符分割,从而通过冒泡排序进行结果显示,最后需要以二进制的形式写在另一个文档中,这个目前还不会,不过正在学习。#...原创 2019-01-09 22:28:34 · 4359 阅读 · 0 评论 -
C语言(从文件中读取数据并进行字符拆分)
从文件中读取数据并进行字符拆分应用到文件读取,数组比较(冒泡),指针、子函数、字符串等知识#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 200int openfile(char *original);//声明一个函数void getdata(char *origi...原创 2019-01-10 17:38:06 · 10027 阅读 · 0 评论