随笔分类 -  C

C的基础及思路
摘要:计算字符串中最后一个单词长度,单词以空格隔开 此代码虽然能运行,但是此函数有一个bug,gets函数:没有指定输入字符的大小,限制输入缓冲区的大小,如果输入的字符大于定义的数组长度,会发生内存越界,堆栈溢出。后果非常怕怕 修改代码如下: fgets函数会指定大小,如果超出数组大小,会自动根据定义数组 阅读全文
posted @ 2018-09-09 20:44 Liu_Jing 阅读(2411) 评论(0) 推荐(0)
摘要:static 1、概述 static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 2 阅读全文
posted @ 2018-05-14 17:11 Liu_Jing 阅读(13366) 评论(0) 推荐(1)
摘要:二级指针偏移 输出: 数组当做函数参数的时候,会退化成指针,但是只退化一次,int b[][3]作为参数会变成(*b)[3];b是一个指针,指向一个数组,数组含有3个int类型的元素。++b之后,注意我们b的类型,一旦移动一个步长,相当于移动3个int位置,所以++b之后,b指向的是a[1][0]; 阅读全文
posted @ 2017-09-11 15:26 Liu_Jing 阅读(842) 评论(0) 推荐(0)
摘要:void及void * 类型: 1、void的含义 void字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 假设用void定义一个变量: void a; 运行编译时会出错,错误提示:非法使用“void”类型。 即使void a的编译不会出错,它也没有实际意 阅读全文
posted @ 2017-06-28 11:17 Liu_Jing 阅读(1839) 评论(0) 推荐(0)
摘要:结构体 typedef struct Teacher{ char name[64]; char *alisname; char **stuname; int age; int id;}Teacher; 给结构体分配内存、在结构体中套二级指针 内存模型图 释放内存空间 一层一层释放 阅读全文
posted @ 2017-05-07 17:06 Liu_Jing 阅读(1268) 评论(0) 推荐(0)
摘要:定义两个辅助指针变量, 挖 字符串 主调函数分配内存,被调函数分配内存: char **p = NULL; //char buf[10][30] p = (char **)malloc(10 * sizeof(char)); //char * array[10] if(p == NULL) { re 阅读全文
posted @ 2017-05-02 20:48 Liu_Jing 阅读(461) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-05-02 20:44 Liu_Jing 阅读(165) 评论(0) 推荐(0)
摘要:自己分配内存,释放的时候一层一层释放 阅读全文
posted @ 2017-05-02 16:53 Liu_Jing 阅读(127) 评论(0) 推荐(0)
摘要:#include #include void printfmyArray2(char myArray[10][30], int num) { int i; for(i = 0; i 0) { strcpy(tmpBuf,myArray[i]); //交换的是内存块 strcpy(... 阅读全文
posted @ 2017-05-01 22:02 Liu_Jing 阅读(219) 评论(0) 推荐(0)
摘要:二级指针做输入 并排序,函数的封装 阅读全文
posted @ 2017-05-01 21:24 Liu_Jing 阅读(194) 评论(0) 推荐(0)
摘要:键值对(“key = valude”)字符串,在开发中经常使用;要求1:请自定义一个接口,实现根据key获取valude;要求2:编写测试用例;要求3:键值对中间可能有n个空格,请去除空格。 注意:键值对字符串格式可能如下: "key1 = valude1 " "key2 = valude2 " " 阅读全文
posted @ 2017-04-30 20:06 Liu_Jing 阅读(854) 评论(0) 推荐(0)
摘要:1 普通的字符串反转函数 2 递归逆序的字符串反转 //通过递归的方式,逆向打印//递归和全局变量(把逆序的结果存入全局变量) //递归和非全局变量(递归指针做函数参数) 阅读全文
posted @ 2017-04-30 18:41 Liu_Jing 阅读(236) 评论(0) 推荐(0)
摘要:求非空字符串长度,两头堵, 阅读全文
posted @ 2017-04-30 15:28 Liu_Jing 阅读(179) 评论(0) 推荐(0)
摘要://char *p = "11abcd111222abcd33322abcd";//求字符串p中 abcd出现的次数//1 请自定义函数接口,完成上述要求//2 自定义的业务函数 和 main函数必须分开 下列代码,找了很久的bug最后终于找到 while(p = strstr(mystr,mysa 阅读全文
posted @ 2017-04-26 21:56 Liu_Jing 阅读(280) 评论(0) 推荐(0)
摘要:[]的本质 和 *P 是一样的, 只不过是符合程序员的阅读习惯buf5 是一个指针 , 只读的常量 buf5是一个常量指针 析构内存时,保证buf所指向的内存空间安全释放 阅读全文
posted @ 2017-04-24 16:57 Liu_Jing 阅读(449) 评论(0) 推荐(0)
摘要:字符串拷贝的不同实现 字符串后的 ’\0‘ 内存分配图 定义指针 一定要分配内存, 没有内存就没有指针 int copy_str26_good(char *from, char *to) { if(from == NULL || to == NULL) { return -1; } while ( 阅读全文
posted @ 2017-04-10 17:09 Liu_Jing 阅读(887) 评论(0) 推荐(0)
摘要:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char buf[20] = "aaaa"; //定义并初始化 char buf2[] = "bbbb"; char *p1 = "111111"; 阅读全文
posted @ 2017-04-09 16:26 Liu_Jing 阅读(144) 评论(0) 推荐(0)
摘要:函数调用时,形参传给实参,用实参取地址,传给形参,在被调用函数里面用*p来改变实参,把运算结果传出来 阅读全文
posted @ 2017-04-08 21:41 Liu_Jing 阅读(482) 评论(1) 推荐(0)
摘要:内存分配和指针的指向 阅读全文
posted @ 2017-04-08 15:03 Liu_Jing 阅读(150) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <stdlib.h>#include <string.h> //野指针产生的原因//指针变量和它所指向的内存空间变量是两个不同的概念//释放了指针所指的内存空间 但是指针变量本身没有重置成null //造成释放的时候 通过if(p1 != NUL 阅读全文
posted @ 2017-03-30 20:49 Liu_Jing 阅读(523) 评论(0) 推荐(0)