3 weixin_39538253

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 10w+

03 02scanf:%*d%s;空格 \n \t;[ab]、[ ^ab]、[a-z]、[ ^a-z]

ssanf(source,"字符匹配",target)sscanf,匹配从第一个字符开始%*d%s 非数字,字符。 情况: 1、乱码,数据类型不是%s; 2、空白,没有间隔符(空格、\t、\n等) %[abc] [abc]%[^abc] [非abc]%[a-z] a到z%[^a-z] 非[a到z]01 %*d%s#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h&g

2020-08-19 23:29:26

03 01 calloc(初默认始0) realloc(可能迁移)

03 01 calloc和realloccalloc,默认初始化为0realloc,原地方不能扩建的话,直接拷贝迁移01 calloc 默认初始化为0#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>//1、calloc,不用初始化,一个指针直接引用void test1(){ int* p=calloc(10,sizeof(i

2020-08-03 23:38:31

02 13 sprintf 格式化、拼接字符串、数字转字符串、二级指针与指针数组 格式化8、16进制

02 13 sprintfsprintf,输出到空间01 sprintf 格式化字符串#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>//1、格式化字符串void test1(){ char buff[100] = { 0 }; //printf( "%s", "参军徐赤特"); sprintf(buff, "%s", "

2020-08-03 17:16:17

02 12 字符串反转;汉字硬反转(天连草色一川平 -> 平川一色草连天)

02 12 字符串反转单个if{return},不要if...else,挂掉就尽快退出01 汉字硬反转(天连草色一川平 -> 平川一色草连天)一些注释都是相想过来的思路,就不删除了。#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stddef.h>char* myReverseStrin

2020-08-03 00:18:10

02 11 字符串拷贝(赋值、指针、指针极简洁写法)

02 11 字符串拷贝有数量,部分初始化 默认0有数量,没初始化 n个烫烫烫没数量,部分初始化 ?个烫烫烫没数量,没初始化 不允许使用01 字符数组(长度一定,正常;不定,乱码)#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stddef.h>//1、字符数组void

2020-08-02 21:38:53

02 09 指针做函数参数的输入特性;02 10 指针做函数参数的输出特性

02 09 指针做函数参数的输入特性A调B,A主调函数,B被调函数输入特性:A开辟堆栈,B读写堆栈输出特性:B开辟堆栈,A读写堆栈01 输入特性:读堆区字符串#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stddef.h>//1、char* strvoid printString1(cons

2020-08-02 18:22:00

02 08 指针的间接赋值

02 08 指针的间接赋值指针类型默认决定取地址的区块,但是不想默认,地址前加(数据类型*)n级指针,存的是(n-1)级指针的地址,可以间接修改(n-1)级指针的值实际3级指针到顶参数是指针的函数,一般是修改/使用外部变量(的地址?没听清)的值01 一级指针——传参(有点指进来又指出去的意思)#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.

2020-08-02 16:44:19

02 06 指针基本概念(理论) 02 07 指针的步长(代码)

02 06 指针基本概念指针,能解引用,被给了一个地址,能代表它

2020-08-02 16:00:30

02 05 栈的生长方向和内存存放方向(小端模式)

02 05 栈的生长方向和内存存放方向小端模式:高位字节放在高地址,低位字节放在低地址01 栈从高到低安排地址#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>void test1(){ int a = 1; int b = 1; int c = 1; printf("%p\n%p\n%p\n", &a, &amp

2020-07-29 23:09:16

02 04 变量传递分析

02 04 变量传递分析00 以下的调用都是指调用栈区变量、堆区、全局的值01 main开栈:A调用main,B调用main#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>void A(){ B();}void B(){}void main() { int a = 1; A(); system("pause")

2020-07-29 22:11:34

02 03 函数的调用惯例(参数压栈顺序,参数由谁销毁)

02 03 函数的调用惯例栈的地址是靠偏移量来寻找的,所以参数压栈顺序,函数参数的销毁是被调函数还是主函数执行(栈的维护方式)需要约定一致,这就是调用惯例明面上写函数test(),编译器可能实际上加了修饰字,来区分不同的调用惯例。C语言中有不同的调用惯例,比如int myadd(int a,int b)实际上编译器写成int _cdecl myadd(int a,int b),如下图,该关键字VS是有的,但不是标准的,linux下gcc的是_attribute_((cdecl))我不敲了,敲这个这个

2020-07-29 21:43:53

02 02 函数调用流程(宏函数、函数栈的堆栈帧调用过程)

02 02 函数调用流程宏函数不是函数,比如:#define MAX 1,但是用起来象函数,如01。特点:不大,一定场景下效率比函数(比如例子02,很多对栈的处理)高真正的函数要有返回值、参数类型、函数体宏函数不做语法简单,就是替换,是简单的文本处理,一般不认为是C语言的内容栈,先进后出,First In Last Out,一种容器位置高的,地址高,所以认为是开口向下的。如下图栈的单位名称是堆栈帧、活动记录函数参数传递用到栈,所以没有栈就没有函数。比如:函数返回值地址(值大放栈,值小放寄存器,

2020-07-29 21:11:53

11 15 字符串常量区(有张四区的图)

11 15 字符串常量区字符串常量可以直接取地址,&“hello world”,即值 == 名称"hello world"被自动认为是char*类型字符串常量,编译器不同,有时写入访问权限错误,即一般不可修改修改一下又重新分配一块内存,浪费空间,所以有的编译器优化允许修改,节省空间ASCII C规定,修改字符串常量,结果是未定义的两个指针指向同一块字符串常量,由于上面说的字符串内存优化,所以有的编译器下指针地址相同(VS),有的不同(tc2.0)。QT是同文件相同,不同文件不同。01

2020-07-29 18:43:56

11 14 const全局和局部变量的区别

11 14 const全局和局部变量的区别const全局变量,常量区,一旦初始化不可直接或间接修改const局部变量,栈区,可间接修改,不可直接修改,可以间接修改01 const全局变量,不可直接或间接修改#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>//一旦初始化,不能直接或间接修改const int a = 1;void

2020-07-29 18:09:29

01 13 extern和static区别

01 13 extern和static区别头文件不要放编译定义,只放声明01 全局静态变量、局部静态变量的区别//全局静态变量、局部静态变量,都存储在静态区,程序运行期间都合法有效,但作用域不同#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>#include <string.h>int a = 10;//全局区,==extern int a=10,外部链接,其它文件

2020-07-29 14:45:54

01 12 堆区

01 12 堆区0 c、C++在malloc的区别C自由,可以int* p = malloc(sizeof(int) * 5);C++严谨,只能int* p = (int*)malloc(sizeof(int) * 5);if (NULL == p),NULL写前面,= =写成 = 一下子能发现只要是连续的空间都可以使用下标的方式访问内存int* p = (int*)malloc(sizeof(int) * 5);p[0]=100;for循环的前加加与后加加++i和i++在这里没有区别,因

2020-07-29 00:12:03

01 11 栈区

01 11 栈区01 不要返回局部变量的地址死掉的a跟你没关系了,不应用它;结果对,也不应用它。#include <stdlib.h>#include <stdio.h>//1int* getInt(){ int a = 1; return &a;}void test1(){ int* p = getInt(); printf("%d\n", *p);}void main() { test1(); system("pause");}

2020-07-27 20:56:44

01 09、10 内存分区的概念(未完成)

01 09 内存分区的概念内存分区,为了理解人为总结的概念,根上是没有的1、数据区2、代码区共享,多开exe,代码区共享,数据区不同只读,防改初始化和未初始化的全局变量和静态变量1、栈区先进后出,小,系统管生死2、堆区大,程序员管生死,不注意释放就爆了在BSS区和栈区之间3、全局静态区3-1、全局区3-2、静态区内部联结3-3、常量区:字符串常量、const修饰的全局变量;只读,一旦初始化,不能修改char* p=“twinkle”;//实际能改,约定不能改const c

2020-07-27 20:08:15

01 08 变量的间接赋值

01 08 变量的间接赋值不要使用不属于你的内存,有被系统回收的危险01 铺垫:直接赋值与间接赋值#include <stdlib.h>#include <stdio.h>//1void test1(){ //1 int a = 1; //直接赋值 a = 2; //间接赋值 int* pa = &a; *pa = 3; printf("%d\n", a);}void main() { test1(); system("pause"

2020-07-27 19:23:37

01 07 sizeof用法

01 07 sizeof用法01 #pragma pack(1,2,…)#include <stdlib.h>#include <stdio.h>#pragma pack(1)//对齐模式改为1/*1 52 63 84 85 86 8*/struct persons{ char name; int age;}psn;void main() { printf("%d\n",sizeof(psn)); system("pause");}

2020-07-27 15:01:16

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。