
C 黑马 C基础
学习笔记
weixin_39538253
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11 13 枚举
11 13 枚举第一个值默认为0,后面递增第一个自定义赋值,后面以此以此递增#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>enum colors{ red,orange,yellow,green,cyan,blue,purple//0123456678}color;void main(){ int col; scan原创 2020-07-26 17:37:52 · 127 阅读 · 0 评论 -
11 12 共用体
11 12 共用体共用体就是所有的成员共用其中一个成员的地址,该成员的内存地址相比最大。这是实际有效的大小。但共用体需要内存对齐,所以共用体大小 >= 除了数组的基本数据类型的整数倍。这是打印出来的大小。01 练习:union的成员推union的大小#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>union vars1//8原创 2020-07-26 16:51:19 · 126 阅读 · 0 评论 -
11 11 结构体嵌套
11 11 结构体嵌套01结构体嵌套的对齐,以两个结构体除了嵌套的结构体的最大的数据类型为基准#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct master//君主{ char name[21]; int age;}master;typedef struct persons//人物{ ch原创 2020-07-26 16:23:21 · 122 阅读 · 0 评论 -
11 10 学生成绩结构体函数实现
11 10 学生成绩结构体函数实现将11 08 堆空间创建结构体学生成绩的冒泡排序提取为函数#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students//8{ char* name; float* scores;};void bubble(struct students *p,int len){ fo原创 2020-07-26 12:42:28 · 213 阅读 · 0 评论 -
12 10 文件行读取
12 10 文件行读取memset(buf, 0, 1024);//防止上一次污染下一次二进制文件有-1,所以不能用EOFfeof可以判断二进制和文本文件,!0结尾;0,未结尾01 写#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){ char* p = "没内鬼,可以交易\n"; FILE* fp原创 2020-07-22 22:05:47 · 121 阅读 · 0 评论 -
12 08 加密解密 适用于中文文本
12 08 加密解密 适用于中文文本01#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//加密void main2(){ FILE* fp1 = fopen("D:\\Data\\Projects\\VisualStudio\\VisualStudio2019\\C++黑马 01 C基础\\12 08 加密解密\\src.原创 2020-07-22 15:27:19 · 133 阅读 · 0 评论 -
11 09 结构体和指针
11 09 结构体和指针01 结构体作为实参 值传递#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students{ char name[21]; int age;};void fun(struct students stu){ strcpy(stu.name, "刘敬宣"); stu.age =原创 2020-07-25 00:42:14 · 107 阅读 · 0 评论 -
11 08 堆空间创建结构体学生成绩
11 08 堆空间创建结构体学生成绩01#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students//8{ char* name; float* scores;};void main(){ struct students* p=(struct students*)malloc(sizeof(str原创 2020-07-24 17:24:44 · 207 阅读 · 0 评论 -
11 07 结构体和指针
11 07 结构体和指针00 理论00 01 结构体指针堆空间,节省栈空间声明结构体指针后,结构体指针->成员变量 == 结构体.成员变量(03)00 02 结构体变量在栈区;结构体在哪?Flash区?怎么看到定义结构体告诉了编译器如何表示数据,但未分配空间。(《C Primer Plus(第六版)》 14.3 定义结构变量 第二句话)结构体是数据类型,跟int,char等标准类型一样,只占用flash空间,结构体变量是要分配内存的,静态和全局变量在堆中分配,局部变量保存在栈中,包括函数原创 2020-07-24 15:34:54 · 140 阅读 · 0 评论 -
11 05、06 结构体数组排序及优化
11 05 结构体排序11 05 结构体排序(冒泡)#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students{ char name[21]; float scores[3];};void main(){ struct students stu[3]; for (int i = 0; i <原创 2020-07-23 22:19:54 · 157 阅读 · 0 评论 -
11 04 结构体数组(rewind(stdin)、getchar()、BUFSIZ)
C语言中的输入输出流和缓冲区(重点)详解解释:为什么scanf被跳过或不执行好多人都会遇到这问题,因为scanf没读完所有缓存中的信息。把回车剩外面了,被下次的scanf接收到了。缓冲区缓冲区就像菜鸟驿站,协调用户(零零散散来拿)和快递员(一次处理很多件),一个慢,一个快的问题。分为全、行、不带缓冲区,scanf遇到的问题属于行缓冲区01 问题:for循环 输入次数和scanf对应不上#define _CRT_SECURE_NO_WARNINGS#include <stdio.h&g原创 2020-07-23 21:14:40 · 560 阅读 · 0 评论 -
11 03 结构体大小和内存存储结构(内存对齐,节省空间,从大到小;空间与阅读性的平衡)
11 03 结构体大小和内存存储结构01 内存对齐 56B成员列表数据类型最长是4字节,所以每次以4字节黑色的是不存数据的,为了补齐内存#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students//52{ char name[20];//20 unsigned int age;//4 char tel原创 2020-07-23 14:26:50 · 208 阅读 · 0 评论 -
11 02 结构体的定义和使用
11 02 结构体的定义和使用01 不指定列名 顺序填#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>struct students{ char name[21]; unsigned int age; char tel[16]; float scores[3]; char sex;};void main(){ st原创 2020-07-23 12:42:58 · 101 阅读 · 0 评论 -
10 02 全局变量和局部变量
01 地址从上到下,从小到大#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void fun(int a, int b, int c){ printf("%p\n", &a); printf("%p\n", &b); printf("%p\n", &c);}void main(){ fun(1,原创 2020-07-22 11:44:26 · 179 阅读 · 0 评论 -
09 09 二级指针数组(叫法可能不对,好恶心的东西,未完成)
01#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void bubble(char ** a,int len){ printf("**a=%c\n", **a);//A printf("**a=%c\n", **(a+1));//a printf("**a=%c\n", **(a) + 1);//B printf("**a=原创 2020-07-21 22:38:53 · 112 阅读 · 0 评论 -
09 07 实现strcat函数(未完成)
09 07 实现strcat函数01 指针和数组“初始化”: 无法从“const char [5]”转换为“char *”#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void mystrcat(char* a, char* pa2){ while (*a) a++; while (*a++ = *pa2++);}v原创 2020-07-21 19:51:16 · 124 阅读 · 0 评论 -
09 06 指针和字符串
09 06 指针和字符串01 strlen(char* pa)==4、strlen(char a[])#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){ char a[] = "hello world"; char* pa = a; *pa = 'm'; pa++; *pa = 'i'; prin原创 2020-07-21 13:30:53 · 126 阅读 · 0 评论 -
09 04、05 实现mystrstr函数、strstr优化
09 04 实现mystrstr函数09 05 strstr优化觉得看代码快点,就是从功能的几种结果推条件,然后组合起来不画图了,没合适的画法01 自己写的#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>char* mystrstr2(char* a, char* b){ /*一开始的思路,三种情况:不匹配,半匹配,全匹配原创 2020-07-21 01:04:37 · 185 阅读 · 0 评论 -
09 03 指针作为函数返回值
09 03 指针作为函数返回值02 整数数组 字符数组 字符串#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void print(int* a, int len){ for (int i = 0; i < len; i++) { printf("%d ", a[i]); }}void print2(char原创 2020-07-20 00:01:45 · 114 阅读 · 0 评论 -
09 02 指针和参数
09 02 指针和参数01 交换 传递地址 tab1(a, b) error#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void tab1(int* a, int* b){ int temp = *a; *a = *b; *b = temp; printf("%d %d\n", *a, *b);}void main原创 2020-07-19 16:43:10 · 104 阅读 · 0 评论 -
08 15 多级指针
08 15 多级指针00 多级指针变量c一级指针pc二级指针pc201 二级指针 伸入2层****#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){ int a = 1; int* pa = &a; int** pa2 = &pa; **pa2= 2; printf("a原创 2020-07-19 15:40:36 · 98 阅读 · 0 评论 -
08 14 指针数组
08 14 指针数组01 int* arr[] = { &a,&b,&c };#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){ int a = 10; int a2 = 20; int a3 = 30; char a5='a'; int a5[]={1,2,3}; int原创 2020-07-19 13:53:13 · 101 阅读 · 0 评论 -
08 13 字符串反转
08 13 字符串反转01 没用指针#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void rec(char* arr){ int len = strlen(arr);//11 char tmp; for (int i = 0; i < len / 2; i++) { tmp=arr[i]; arr[i]原创 2020-07-19 12:52:56 · 114 阅读 · 0 评论 -
08 12 实现strchr函数
08 12 实现strchr函数01#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ char a[11] = "Hello World"; int a2[] = {0};//4,7,11 int j = 0; //找到'o'的下标,4、7 for (int i = 0;i < 11; i++) { if(a[i] != '\0'&& a[i] == 'o') {原创 2020-07-19 11:42:04 · 112 阅读 · 0 评论 -
08 11 指针实现冒泡排序(未完成,直接动地址就error左值问题)
08 11 指针实现冒泡排序01 pa[i]#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ int a[10] = { 1,2,3,6,5,4,9,8,7,10 }; int* pa = a; int ta; for (int i = 0; i < 10-1; i++) { for (int j = 0; j < 10-1-i; j++) { if (pa[j+1] &原创 2020-07-18 18:36:37 · 100 阅读 · 0 评论 -
08 10 指针和数组、指针运算
08 10指针和数组、指针运算01 a[i] == pa[i]#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ //1 int a[10] = { 0 }; int* pa = a; printf("%p,%p\n",a,&a[0]); for (int i = 0; i < 10 ; i++) { printf("%d\n", pa[i]); } system("paus原创 2020-07-18 15:43:12 · 201 阅读 · 0 评论 -
08 08 const修饰指针 const前 const后 const前和后
08 08 const修饰指针00 总结const int*const int*const int* const值锁锁地址锁锁01 const int#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ //1 const int a = 10; printf("%d\n", a); int* pa = &a; *pa = 100; prin原创 2020-07-17 23:44:26 · 95 阅读 · 0 评论 -
08 07 野指针 空指针 万能指针讲解
08 07 野指针 空指针 万能指针讲解01#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ int a = 10; int* pa = &a; pa = 0xff00; *pa = 100; system("pause");}原创 2020-07-17 23:00:56 · 104 阅读 · 0 评论 -
08 06 野指针 空指针 万能指针
01 野指针,指向地址100的地址,并改值#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ //1、不知道地址100的值的类型,所以是指向它的pa是野指针 int a = 10; int* pa = &a; pa = 100; *pa = 100; printf("%d\n", *pa); system("pause"); }02 空指针#define _CRT_SECUR原创 2020-07-17 21:10:46 · 125 阅读 · 0 评论 -
08 05 指针讲解2
08 05 指针讲解201 指针改变指向#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ int a = 10; a = 20; int a2 = 100; int* pa; pa = &a; pa = &a2; printf("%d\n", a); printf("%d\n", *pa); system("pause");}02 指针改变指向后赋值#defin原创 2020-07-17 20:30:59 · 85 阅读 · 0 评论 -
08 03 指针定义和使用
08 03 指针定义和使用01 %p,%X%p,完整地址%X,Trim0的地址#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ int a = 10; a = 20; int a2 = 100; int* pa = &a; pa = &a2; printf("%p\n", &a2); printf("%X\n", pa); system("pause");}原创 2020-07-17 20:10:27 · 92 阅读 · 0 评论 -
07 02 标准输入输出(未完成)
07 02 标准输入输出gets printf puts01 printf 不换行#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void main(){ char a[100]; printf("请输入a:\n"); gets(a);//\n结束 printf("%s\n", a); char b[100]; printf("请输入b:\n"); gets(b); puts(b);//自动换行\n syst原创 2020-07-17 18:50:38 · 95 阅读 · 0 评论 -
C++黑马 01 C基础 06 13 字符数组的输入(空格,截断)
字符数组的输入01 %[^\n]#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stdlib.h>void main(){ char a[100]; scanf("%[^\n]", a);//\0人成两个 printf("%s", a); system("pause");}02 %[^1-9]#define _CRT_SECURE原创 2020-07-16 21:34:29 · 152 阅读 · 0 评论 -
C++黑马 01 C基础 06 12 字符数组 (\0 \n %s截断字符数组 烫烫烫烫烫?)
06 12 字符数组#define _CRI_SECURE_NO_WARINGS#include <stdio.h>#include <string.h>#include <stdlib.h>void main(){ //1、 char a[10] = { 'H','e','l','l','o'}; printf("%s,", a);//%s截断'\0','\0'==0 printf("\n杠零==%d", '\0'); printf("\n");原创 2020-07-16 19:01:17 · 227 阅读 · 0 评论 -
C++黑马 01 C基础 06 04 数组的初始化和内存结构(数组越界)
06 04 数组的初始化和内存结构数组未越界,未赋值部分默认初始化为0数组越界,越界部分乱码#define _CRI_SECURE_NO_WARINGS#include <stdio.h>#include <string.h>#include <stdlib.h>void main(){ int a[10] = { 0,1,2,3,4,5,6,7,8,9 }; for (int i = 0; i < 10; i++) { printf("原创 2020-07-16 18:27:24 · 144 阅读 · 0 评论 -
C 05 04 类型转换
黑马C++_01C基础从低到高,自动类型转换从高到低,需要强制转换原创 2020-07-16 14:51:55 · 91 阅读 · 0 评论