C语言
文章平均质量分 66
poison_biti
这个作者很懒,什么都没留下…
展开
-
详述大端小端存储
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。原创 2016-07-22 23:31:44 · 457 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy: strcpy是字符串的拷贝。 strcpy函数原型: char* strcpy(char* dest, const char* src); 模拟实现strcpy: char * strcpy(char * dest, const char * src) // 实现src到dest的复制 { if ((src == NULL) ||原创 2017-07-24 18:05:39 · 799 阅读 · 0 评论 -
动态库和静态库的区别
什么是库: 库通俗的说就是把这些常用函数的目标文件打包在一起,提供相应函数的接口,便于程序员使用。库是别人写好的现有的,成熟的,可以复用的代码,我们只需要知道其接口如何定义,便可以自如使用。 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。比如我们常使用的printf函数,就是c标准库提供的函数。我们在使用时只需要包含原创 2017-08-07 19:33:43 · 1143 阅读 · 0 评论 -
链表带环和相交的问题
判断两个链表是否相交?(不带环) (1)第一种方法:我们只需要遍历每条链表,把最后一个节点保存起来,然后判断这两条链表的最后一个节点是否相等,如果是一样的节点,那么这两个节点就一定相交。 (2)第二种方法:遍历两条链表,求出链表L1的链表长度为len1,链表L2的链表长度为len2,长度差为| len1 - len2 |,让长的链表先走长度差步,然后两个链表在从原创 2017-07-17 20:42:12 · 1104 阅读 · 0 评论 -
指针和数组——面试基础(1)
刚开始学习编程的时候总以为数组就是指针,指针就是数组,容易混淆。其实,数组和指针是有区别的。 数组与指针的区别: 数组: 1、数组要么在静态存储区被创建(全局数组),要么在栈上被创建(局部数组) 2、数组名对应着(不是指向)一块内存(大小已知),其地址与容量在生命周期内保持不变,只有数组内容 可以改变。 指针: 1、指针可以随时指向任意类型的内存块(不同类型可以通过强制类原创 2016-09-23 13:48:54 · 440 阅读 · 0 评论 -
字符数组的翻转
有一个字符数组"student a am i”,请将数组改为"i am a student" 不可以用到库函数,所有函数必须自己编写 "test.cpp” #define _CRT_SECURE_NO_WARNINGS 1 #include using namespace std; #include void Reversal(char* start,ch原创 2016-07-21 01:16:20 · 579 阅读 · 0 评论 -
C++基础小程序——走向程序员的第一步
"Student.h" #pragma once #include void Swap1(int* num1,int* num2) { int tmp = *num1; *num1 = *num2; *num2 = tmp; } void Swap2(int* num1,int* num2) { *num1 = (*num1)*(*num2); *num2 = (*num1)/(*原创 2016-07-31 20:03:21 · 685 阅读 · 0 评论 -
字符串函数自定义
字符串函数(String processing function)也成字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。原创 2016-07-31 17:08:01 · 848 阅读 · 0 评论 -
棋盘游戏
简单的棋盘游戏,简单的三子棋玩法,和这个代码类似的话还可以写出五子棋等棋盘游戏原创 2016-07-19 20:04:43 · 598 阅读 · 0 评论 -
顺序表的基本操作——静态实现
"SeqList.h" #ifndef __SEQLIST_H__//防止重定义 #define __SEQLIST_H__ #include #include #include #include #define MAX 5 typedef int DataType;//typedef语句后面要有一个分号; typedef struct SeqList {原创 2016-05-28 15:39:49 · 605 阅读 · 0 评论 -
单向链表的基本操作
"SListNode.h” #ifndef __SListNode_H__ #define __SListNode_H__ #pragma once //能够保证头文件只被编译一次 #include #include #include typedef int DataType; typedef struct SListNode { DataType data;原创 2016-05-28 15:34:25 · 550 阅读 · 0 评论 -
通讯录——静态实现
"AddRess.h" #ifndef __ADDRESS_H__ #define __ADDRESS_H__ #include #include #include #include #define MAX 10 //这里我为了调试方便取了一个较小的数值 enum OP { EXIT = 0,//退出 ADD, //增加联系人 DEL,原创 2016-05-28 15:41:42 · 544 阅读 · 0 评论 -
注释转换
"CommentConvert.h" #ifndef __COMMENTCONVERT_H__ #define __COMMENTCONVERT_H__ #include #include #define INTFILE "intfile.c" #define OUTFILE "outfile.c" enum STATE { NUL_STATE, C_STATE,原创 2016-05-28 15:48:12 · 507 阅读 · 0 评论 -
排序----冒泡排序的优化_选择排序_插入排序
"test.c" #define _CRT_SECURE_NO_WARNINGS 1 #include "Sort.h" int main() { int arr[] = {6,3,8,1,4,9,5,0,2,7}; int size = sizeof(arr)/sizeof(arr[0]); BubbingSort(arr,size); //SelectSort(ar原创 2016-06-01 21:39:18 · 736 阅读 · 0 评论 -
双向链表——基本操作
"test.c" #define _CRT_SECURE_NO_WARNINGS 1 #include "DoubleSLishtNode.h" void Test1()//InitDSList PushBack PrintfDSList PopBack { PDoubleSListNode pHead = NULL; InitDSList(&pHead); Pus原创 2016-06-02 13:43:23 · 606 阅读 · 0 评论 -
memcpy和memmove的区别
先看一个例子 void test() { int arr[] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}; size_t size = sizeof(arr)/sizeof(arr[0]); for (int i = 0;i < size;i++) { cout<<arr[i]<<" ";原创 2017-07-24 18:08:37 · 359 阅读 · 0 评论