![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
yanjiangbo
后端开发工程师(PHP PYTHON GO)
展开
-
彻底搞定C指针系列
地址:http://blog.pfan.cn/whyhappy/articlelist_1491_1067_1.html彻底搞定C指针-函数名与函数指针彻底搞定C指针-指向另一指针的指针 彻底搞定C指针-变量的内存实质彻底搞定C指针-指针与数组名彻底搞定C指针-const int * pi/int * const pi的区别彻底搞定C指针-函数参数的传递(很详细)原创 2012-04-12 17:18:18 · 957 阅读 · 1 评论 -
一些字符串及内存操作函数的实现
#include char *_strcpy(char *dest, const char *src){ //assert(dest != NULL && src != NULL); char *p = dest; while(*src != '\0') { *dest++ = *src++; } return p;}原创 2013-10-12 17:11:54 · 898 阅读 · 0 评论 -
二分查找算法
BinarySearch原创 2011-07-08 15:48:12 · 488 阅读 · 0 评论 -
数组、链表实现栈(C语言版)
#include #define MAX_SIZE 50typedef struct Stack{ int data[MAX_SIZE]; int top;}stack;void InitStack(stack *s){ s->top = -1;}int IsFull(stack *s){ return (s->top == MAX_SIZE - 1);}in原创 2013-09-18 16:40:39 · 1334 阅读 · 0 评论 -
二路归并排序
#include void MergeArray(int a[],int s,int m,int t){ int i = s; int j = m+1; int tmp[t+1]; int k=0; while(i<=m && j<=t) { if(a[i] <= a[j]) { tm原创 2013-10-10 10:47:49 · 683 阅读 · 0 评论 -
【链表】反转单链表
比如单链表A -> B -> C -> D -> E -> F -> NULL 反转得到 F -> E -> D -> C -> B -> A -> NULL 【算法一】最通用的算法,对于当前要反转的节点,在反转过程中牵扯到3个节点:前继节点(pPre)、当前节点(pCur)、后继结点(pNext),当然在算法实现的过程中有时候多增加一些变量能带来事半功倍的效果,在这里我们额外定义一原创 2012-07-05 10:53:30 · 601 阅读 · 0 评论 -
【链表】merge两个非递减的链表为一个非递减的链表
void MergeList(LinkList *la, LinkList *lb, LinkList *lc){ LinkList *pa,*pb,*pc; lc = pc = la; pa = la->next; pb = lb->next; while(pa != NULL && pb !=NULL) { if(pa->data data) { pc->nex原创 2013-08-23 14:27:39 · 862 阅读 · 0 评论 -
数组实现队列(C语言版)
#include #define QUEUE_SIZE 50typedef struct SeqQueue{ int data[QUEUE_SIZE]; int front; int rear;}Queue;Queue *InitQueue(){ Queue *q = (Queue *)malloc(sizeof(Queue)); if(原创 2013-10-09 13:41:08 · 4997 阅读 · 1 评论 -
const int *pi、int const *pi 与 int *const pi的区别
1 从const int i 说起 你知道我们申明一个变量时像这样int i ;这个i是可能在它处重新变赋值的。如下:int i=0;//…i=20;//这里重新赋值了 不过有一天我的程序可能需要这样一个变量(暂且称它变量),在申明时就赋一个初始值。之后我的程序在其它任何处都不会再去重新对它赋值。那我又应该怎么办呢?用const 。//*************转载 2013-08-22 13:51:45 · 781 阅读 · 0 评论 -
堆与栈的区别
//main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; //栈 char s[] = "abc"; //栈 char *p2; //栈 char *p3 = "123456"; //"123456\0"在常量区,p3在栈上。 static int c = 0; //全局(静态)初始化区 p原创 2012-08-09 16:05:00 · 444 阅读 · 0 评论 -
define中#与##区别
C中#define可以有 #, ## #@在#define 定义时, 斜杠("\")是用来续行的。"#"用来把参数转换成字符串,是给参数加上双引号。"##"则用来连接前后两个参数,把它们变成一个字符串,不添加任何符号。"#@"是给参数加上单引号。【例子】#define BY(x,y) x##y // BY(a,b) => ab#define BY(a) #@a原创 2012-08-09 18:25:57 · 656 阅读 · 0 评论 -
字节统计
在32位机器上,4位一寻址,一个指针占4个字节;在64位机器上,8位一寻址,一个指针占8个字节;所以,对于typedef struct node{ char name[10]; struct node *link;}stud;32位:sizeof(stud) = 1664位:sizeof(stud) = 24原创 2012-07-02 11:43:27 · 1130 阅读 · 0 评论 -
gdb常用调试命令
原创 2012-06-11 11:32:28 · 420 阅读 · 0 评论 -
C语言开发基础知识
C语言标准头: 断言 字符类测试 (部分)库函数抛出的错误代码 浮点数运算 检测整型数据类型值范围 本土化 数学函数 “非局部跳转” 信号 可变参数列表 一些常数,类型和变量 输入和输出 实用功能 字符串函数 时间和日期函数 头文件定义了用于输入和输出的函数、类型和宏。 头文件里包含了C语言原创 2014-02-28 14:20:35 · 913 阅读 · 0 评论