自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

转载 c++(7)

1. 类型检查更严格  举个例子,我们都知道,当一个变量定义为const类型后,这个变量的值是不能被改变的,但是在C中,我们可以拐着弯去修改const类型变量的值,如下:int main(int argc, char *argv[]){ const int a = 100; //a = 200; // error int *p = &a; *p = 2

2017-02-26 15:36:57 334

原创 c++(6)

C++中的函数重载大家并不陌生,也经常使用。这篇博文首先简单介绍一下重载的规则与调用匹配,然后介绍一下重载的底层原理,最后再介绍一下 extern “C”的使用。1. 重载规则与调用匹配1.1 重载规则首先来看下函数的重载规则,这个比较简单,如下:函数名要相同。参数个数不同,参数的类型不同,参数顺序不同,均可构成重载。返回值类型不同则不可以构成重载。

2017-02-26 15:35:21 451

转载 c++(5)

最近碰到一个c++创建动态二维数组的问题。上网查了查资料,现在吧有关内容做一个小结。 关于二维数组,有几个容易混淆的概念。int ** arr0;int *arr1[];int (*arr2)[];int arr3[][];12341234int * *arr0 是一个二级指针,就是指针的指针。int *arr1[]是一个指针数组,就是说,它首先是一个数组 ,而数组中的元素都

2017-02-26 15:34:06 278

原创 c++(4)

遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int volatile a; 或者volatile int a;当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。一般说来,volatile 用在如下的几个地方: 1) 中

2017-02-26 15:31:18 272

转载 c++(3)

什么函数都有可能失败,构造函数也不另外,比如new一个对象或空间不成功。当构造函数失败的时候,其实很多时候我们不想这个对象被继续生成,这个时候就可以在构造函数里面抛出异常。C++规定构造函数抛出异常之后,对象将不被创建,析构函数也不会被执行,但已经创建成功的部分(比如一个类成员变量)会被部分逆序析构,不会产生内存泄漏。但有些资源需要在抛出异常前自己清理掉,比如打开成功的一个文件,最好关闭掉再抛出异

2017-02-26 14:03:12 205

原创 c++(2)

1多态class Base2{public: virtual void init() { cout "Base2::init" << endl; } Base2() { init(); }};class Drived :public Base2{public: void init()

2017-02-26 14:01:55 314

原创 c++(1)

指针小知识: 1. int a = 10; const int *p = &a; //表示一个p为一个指向常量的指针,不能通过 *p = 20;来重新赋值;2. int a = 10; int b = 11; int *const p = &a;//表示p为一个指针常量,不能修改p指向的地址,即p = &b语法错误。3.指针函数 int (* p)(in

2017-02-26 13:58:10 286

原创 02.07创建进程的四种方法

#include #include #include #include #include #include #include #include struct msgbuf{    long typeid;    char msg[1024];};int main(int argc, char *argv[]){

2017-02-07 20:22:03 251

转载 Linux C网络编程基础

TCP/IP基础UDP提供无连接服务 UDP的数据格式:#ifdef __FAVOR_BSDstruct udphdr { u_int16_t uh_sport; /* source port */ u_int16_t uh_dport; /* destination port */ u

2017-01-21 00:38:28 497

原创 01.19读写三行文件编译

#include #include #include #include #include #include #include #define MAX_SIZE 1024int read_line(int fd, char *buffer, int max_len){    int i;    int n_read;

2017-01-19 22:55:30 224

原创 01.18数据库

#include #include #include int handle_result(void *para, int column_count, char **column_value, char **column_name){    printf("para = %s\n",(char *)para);    printf("column co

2017-01-18 22:39:06 157

原创 01.17两个矩阵相加,输出矩阵

主函数:#include #include #include #include #include #include #include int main(){    int fd1;    int fd2;    int fd3;    int n_read1;    int n_read2;   

2017-01-17 20:15:46 706

原创 双向循环链表

#include struct node{    int num;    struct node *next;};typedef struct node Node;typedef Node * Link;void creat_link(Link *head){    //*head = NULL;    *head = (Link

2016-12-24 21:44:41 165

原创 单向循环链表

#include struct node{    int num;    struct node *next;};typedef struct node Node;typedef Node * Link;void creat_link(Link *head){    //*head = NULL;    *head = (Link

2016-12-24 21:44:22 189

原创 带表头链表

#include struct node{    int num;    struct node *next;};typedef struct node Node;typedef Node * Link;void creat_link(Link *head){    //*head = NULL;    *head = (Link

2016-12-24 21:43:32 355

原创 链表前插,后插,中间插,删除

#include struct node{    int num;    struct node *next;};typedef struct node Node;typedef struct node  * Link;void creat_link(Link *head){    *head = NULL;}

2016-12-19 21:52:59 702

原创 二级指针

声明数组和测试#include void matrix_test();int main(void){ matrix_test(); return 0;}void matrix_test(void){ int matrix[3][10] ={ { 1,2,3,4,5,6,7,8,9,10 },

2016-12-12 00:02:03 204

原创 代码

优先级问题1,赋值运算符和比较运算符的优先级问题 int c ; c = getchar() != EOF (c = getchar()) != EOF1231232,X * = Y +1问题。##include void sizeof_type_test(void);void strlen_test(void);int my_strlen(cha

2016-12-12 00:00:38 255

转载 指向指针的指针

注意:指向指针的指针适合于做链表1.声明方式:在变量名前放置两个*符号int **var;2.实例:#include int main (){ int var; int *ptr; int **pptr; var = 3000; /* 获取 var 的地址 */ ptr = &var; /* 使用

2016-12-09 23:01:05 170

转载 指针

注意:对指针进行加减操作 比如++ 或--之后,指针的值并不是加1或减1,而是根据数据类型字节数的不同移动了不同的字节数1.指针是一个变量,可以表示数据(整型浮点型字符型)以及函数在内存中的位置。2.声明指针的格式 type * var-name 类型是指针所指向的数据的类型。3.对一个数据取指针 & 符号,取出后付给 指针 var-name 4.想要得到指针所

2016-12-09 23:00:24 167

转载 字符串子串替换

由于Linux C没有对字符串子串替换功能,所以我自己写了一个str_replace函数,实现了字符串替换.请大家参考./* * FUNCTION     : str_replace * ABSTRACT     : replace child string in a string. * PARAMETER    : *       char* str

2016-12-09 22:58:51 617

转载 12.06

(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。#include  int main( )  {      int i;      int a[20]= {13,45,89,32,54,21,90,723,65,45};    print

2016-12-06 21:45:35 207

原创 11.05

#include int add(int a, int b){    return a + b;}int sub(int a, int b){    return a - b;}int mul(int a, int b){    return a * b;}void func(int (*p_func)(int,i

2016-12-05 22:23:48 201

转载 malloc的实现原理(2)

C语言的malloc分配的的内存大小没读过malloc()的源码,所以这里纯粹是"理论研究"。malloc()在运行期动态分配分配内存,free()释放由其分配的内存。malloc()在分配用户传入的大小的时候,还分配的一个相关的用于管理的额外内存,不过,用户是看不到的。所以,实际的大小 = 管理空间 + 用户空间        那么,这个管理内存放在什么位置呢,它

2016-12-02 22:36:45 179

转载 malloc的实现原理(1)

一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前

2016-12-02 22:35:27 141

原创 删除字符串中出现次数最少的子串

mian函数#include #define MAX_SIZE 1024int main(){    char src[MAX_SIZE];    int min;    int count[26] = {0};        printf("Please input string:(only:a-z:)\n");    scanf(

2016-12-02 22:29:11 261

原创 指针部分笔记

野指针:随机指向一块内存的指针称为野指针,野指针造成的错误叫内存泄漏,野指针不一定造成内存泄漏,野指针指向空时不对野指针指向的空间赋值。怎么避免野指针:养成良好的编码规范;NULL是个宏,#define NULL(void*) 0;0地址对应的空间是不允许操作的,见空不对指针指向的空间操作;int *p =malloc(sizeof(int));//往一个指针指向的空间赋值时,要检查指

2016-12-01 12:43:33 119

原创 指针部分笔记

指针是一个变量,指针的步长,步长不同,数组的地址跳一个数组的长度*:间接运算符,取值运算符,取指针变量对应空间保存的地址对应的内存空间对应的值int num = 5;   num++;对num对应的内存空间的值自加int * p = &num;   p++;对p对应的内存空间的值自加1int * p; p = &num;   (*p)++;对p对应空间保存的地址对应的内存空间对应的

2016-12-01 12:28:41 127

原创 字符串删子字串

主函数#include #include #define MAX_SIZE  1024int main(){    char src[MAX_SIZE];    char sub[MAX_SIZE];    printf("Please input src:\n");    scanf("%s",src);    printf

2016-12-01 09:32:56 259

原创 题目:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.

main主函数#include #include #define MAX_SIZE 1024int main(){    char src[MAX_SIZE];    char head[MAX_SIZE];    char tail[MAX_SIZE];    printf("Please input src string:\n");

2016-11-28 22:12:51 1281

原创 题目:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headha

#include #include #define MAX_SIZE 1024char *current(char src[],char head[],char tail[]){int i = 0;int j = 0;int len_h;int len_t;int i_h = 0;int i_t = 0;;le

2016-11-27 19:27:54 550

原创 数字转字符串(改)

#include #include #define MAX_SIZE 1024void *lixu(char *sl,int len){int i = 0;char temp;for(i = 0;i {temp = *(sl + i);*(sl + i) = *(sl + len - 1 - i);*(sl + len - 1 - i)

2016-11-26 22:40:34 183

转载 printf函数详解

首先直接描述printf函数中的“格式描述串”,它是由一系列的“格式转换说明符号”组成,格式转换说明符号的描述形式如下:%[+][-] 0 m[n][输出精度](1)形式字母:制定输出格式,如表d:十进制整型数i:十进制整型数x:十六进制整型数o:八进制整形数u:无符号十进制整形数c:单个字符s:字符串e:指数形式的浮

2016-11-26 22:35:54 234

原创 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.

主程序:#include #include #define MAX_SIZE 1024int main(){char src[MAX_SIZE];printf("please input a string:");gets(src);reserve_string(src,strlen(src));reserve_word

2016-11-26 22:33:23 348

原创 11.24位运算3,4

#include int output_num_p1top2(int n,int p1,int p2,int arr[]){int i;int j;int a;int temp = 0;for(i = p1 - 1; i {temp = !((n >> i) & 1);arr[i] = temp;i++;}for(j = (p2

2016-11-24 19:47:08 232

原创 11.23位运算1,2

#include void num_of_byte_1(char ch){int i;int k = 0;int count = 0;for(i = 0; i {k = ch & 1;ch = ch >> 1;if(k == 1){count++;}}printf("number = :%d\n",count);

2016-11-24 19:46:07 245

转载 冒泡排序三种优化

传统的冒泡排序完全可以满足我们最基本的需求,但是也仅仅是最简单的需求,这种简单的两个for循环不加任何的判断语句的形式注定它只能是一种效率最低的算法。我们先贴一个传统的实现方式,之后的三个优化全部建立在函数排序所使用的消耗上,这也是我们优化一切算法的根本路径。[cpp] view plain copy print?void Bubbl

2016-11-22 21:59:57 330

原创 数字转字符串

#include #include #define MAX_SIZE 1024int change_number_string(char num,char *src){    int i;    int a;    int len;    char temp;        len = strlen(src);    fo

2016-11-21 23:05:46 200

转载 声明

曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的 C/C++声明:我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地 理解任何C/C++声明的“右左法则”。需要强调一下的是,复杂的C/C++声明并不是好的编

2016-11-20 20:34:38 177

原创 编程语言的种类简介

GO:   Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。该语言设计为一款系统编程语

2016-11-19 23:34:39 5816

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除