C学习
文章平均质量分 81
DDR内存测试
一棹春风一叶舟,一纶茧缕一轻钩。花满渚,酒满瓯,万顷波中得自由。
展开
-
X86和X64的区别
一、简介X86:32位系统,是指操作系统一次性可以处理的位数是32。x86指的是一种cpu的架构,x86架构的特点是cpu的寄存器是32位的。X64:也可写作X86-64,64位系统,指操作系统一次性可以处理的位数是64。x64架构的特点是cpu的寄存器是64位的。二、数据类型长度不同位数OS下的变量类型的长度如下:32位平台char1个字节8位...原创 2019-12-13 15:14:08 · 8725 阅读 · 0 评论 -
C语言学习序言
C语言学习是嵌入式入门的基础,啥都不说,先买本谭浩强的C语言程序设计教材,我的大一入门教程,入门神器!程序学习,光看不练,那是白搭!上机!敲代码!多思考!可不可以换种思路编程。...原创 2019-01-28 20:15:10 · 227 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷36------总线设备驱动模型
原创 2019-04-21 11:12:55 · 126 阅读 · 0 评论 -
问:全局变量是否可以定义在被多个.c文件包含的头文件.h中?
答:可以。在不同的C文件中以static形式来声明同名的全局变量,建议不要在头文件中定义变量,只做变量的声明。原创 2019-03-05 10:45:18 · 1548 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷37------串口驅動程序設計
原创 2019-03-13 08:53:00 · 85 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷38------網卡驅動程序設計
原创 2019-04-19 09:59:55 · 110 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷39------觸摸屏驅動程序設計
原创 2019-04-26 10:51:32 · 107 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷40------LCD驅動程序設計
原创 2019-04-26 10:51:47 · 119 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷41------FLASH驅動程序設計
原创 2019-04-30 12:42:55 · 95 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷42------I2C驱动程序设计
原创 2019-04-19 09:59:12 · 138 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷43------SPI驱动程序设计
原创 2019-04-30 12:43:05 · 166 阅读 · 2 评论 -
我的嵌入式LINUX学习.卷44------USB内核驱动架构
原创 2019-04-30 12:43:19 · 184 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷45------USB驱动程序设计
原创 2019-04-30 12:43:30 · 129 阅读 · 0 评论 -
我的嵌入式LINUX学习.卷46------实战开发
原创 2019-04-30 12:43:46 · 130 阅读 · 0 评论 -
问:已知三个字符串str1、str2、str3,请编程实现如下功能:找出str1中有几个str2,找出后,用str3替换str2,注:不能用系统库函数,如strcat、strcpy等,但可以自己实现。
答:/***function:最终替换生成的字符串保存到result中******/void sub_str_replace(char *str1, const char *str2, const char *str3, char *result){char * tmp = str1;//开始查找字符串str2 ,返回第一次出现的位置const char *cp = NUL...原创 2019-03-05 21:38:30 · 1506 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strlen的全部功能
/****自定义实现的系统库函数*************/int my_strlen(const char* str){assert(str);//检测参数str指针是否为空int count = 0;while (*(str++) != '\0'){count++;}return count;...原创 2019-03-05 21:42:36 · 385 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strcpy的全部功能
char* my_strcpy(char* dest, const char * src){assert(dest);//检测参数是否为空指针assert(src);//检测参数是否为空指针char *ret = dest;while ((*(dest++) = *(src++)) != '\0');return ret;}...原创 2019-03-05 21:44:23 · 707 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strcmp的全部功能
int my_strcmp(const char* str1, const char* str2){assert(str1&&str2);while (*str1++== *str2++){if ((*str1 == *str2) && (*str1 == '\0'))retur...原创 2019-03-05 21:45:26 · 863 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strcat的全部功能
char * my_strcat(char * str1, const char *str2){assert(str1&&str2);//检测参数是否为空指针char * ret = str1;while (*(str1++) != '\0');while (*str2 != '\0'){*(str...原创 2019-03-05 21:46:21 · 400 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strstr的全部功能
/**********定位出src在dest字符串中的位置,若不存在就返回NULL*******/char *my_strstr(const char *dest, const char *src){assert(dest && src);//检测参数是否为空指针char *p = NULL;char *q = NULL;wh...原创 2019-03-05 21:47:39 · 292 阅读 · 0 评论 -
问:自定义一个函数,实现库函数strncpy的全部功能
char *my_strncpy(char *dest, const char *src, int count){assert(dest&&src);//检测参数是否为空指针while (count) //复制count个字符,循环count次 {*dest++ = *src++;count--;}if (*(dest) != '\0')*(d...原创 2019-03-05 21:48:31 · 219 阅读 · 0 评论 -
问:一个int型变量a,如何将它的bit3置位,bit7清零。
答:a | 0x08 a & (~0x80)原创 2019-03-05 21:49:23 · 3046 阅读 · 0 评论 -
请用递归法实现单向链表的反转,即头结点指向尾结点,尾结点指向头结点
typedef struct _Node { int data; struct _Node * next; } Node;Node * Node_reverse(Node *node) { if (node == NULL) return NULL; if (node->next == NULL) return node; Node * ...原创 2019-03-09 16:59:21 · 222 阅读 · 0 评论 -
请找出单向链表的数据元素值最大的结点。
typedef struct _Node {int data;struct _Node * next;} Node;Node* SearchMax(Node* pHead)//pHead为头结点{Node* p1;Node* p2;p1 = pHead->Next;p2 = p1->Next;whi...原创 2019-03-09 17:01:23 · 1295 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请找出连续三个结点的数值和最小的值为多少。
typedef struct _Node {int data;struct _Node * next;} NODE;int Search3NodeMax(NODE* pHead)//pHead为头结点{Node* p1;NODE* p2;NODE* p3;int mix=-1;if(NULL == pHead...原创 2019-03-11 10:26:41 · 319 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请找出连续三个结点的数值和最大的值为多少。
typedef struct _Node { int data; struct _Node * next;} NODE;int Search3NodeMax(NODE* pHead)//pHead为头结点{ Node* p1; NODE* p2; NODE* p3; int max=0; if(NULL == pHead)...原创 2019-03-11 10:17:18 · 343 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请取出倒数第N个结点的数据。
typedef struct node{int data;struct Node * next;} NODE,*PNODE;NODE* Findlastth(NODE*head,int N) //找寻链表中倒数第N个节点{ int k=N; NODE*p,*q; p=q=head->next;...原创 2019-03-09 17:12:19 · 607 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请在包含指定数据元素值为K的结点前插入一个新结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* insert_after_node(NODE* Head,const int K){NODE* p = Head;NODE* q = (NODE* )malloc(sizeof(NODE)); ...原创 2019-03-09 17:45:32 · 1655 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请在包含指定数据元素值为K的结点后插入一个新结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* insert_after_node(NODE* Head,const int K){ NODE* p = Head; NODE* q = (NODE* )malloc(NODE); if(NU...原创 2019-03-09 17:34:53 · 646 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请删除包含指定数据元素K的结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* delete_list_node(NODE* Head,const int K){NODE* p = (NODE* )malloc(sizeof(NODE));NODE* q = (NODE* )ma...原创 2019-03-09 17:57:09 · 747 阅读 · 0 评论 -
使用后插法创建一个有n个结点的单向链表
typedef struct Node {int data;struct Node * next;} NODE;void linklist_create_with_taiI_insert(int* data,unsigned short n){ NODE* pHead = (Node*)malloc(sizeof(Node)); NO...原创 2019-03-09 17:20:16 · 3009 阅读 · 0 评论 -
关于联合体union的字节数与字节对齐
举例说明:typedef union {char s[9];//9 bytesint n;//4 bytesdouble d;//8 bytes}U1;问:sizeof(U1)=_________?分析:U1的最长变量类型为double,8个字节,但是U1的最长变量s[9]的字节数为9,9不能整除8,为了保持字节对齐,sizeof(U1)=16。typ...原创 2019-03-03 11:30:22 · 3221 阅读 · 0 评论 -
关于结构体的位域(位段)的字节数
一、位域的大小与对齐 如果结构体中含有位域(bit-field),那么VC中准则是: 1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止; 2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍; 3) 如果...原创 2019-03-03 12:14:27 · 1751 阅读 · 0 评论 -
若在C/C++编程中,文件a.c与b.c相互调用与依赖,如何解决?
答:把双方需要调用的函数剥离出来,单独存放到第三个文件c.c中原创 2019-03-03 12:41:53 · 351 阅读 · 0 评论 -
ifdef、define、endif这些关键字的作用是什么?
1、 注释掉一段代码;2、防止头文件重复包含。原创 2019-03-03 13:14:09 · 1258 阅读 · 0 评论 -
问:什么是最小堆?什么是最大堆?在堆中怎么插入或删除一个元素?
答:最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。最小堆:根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。 最大堆的插入最大堆的插入的思想就是先在最后的结点添加一个元素,然后沿着树上升。跟最大堆的初始化大致相同。MaxHeap&...原创 2019-03-09 10:35:39 · 3387 阅读 · 0 评论 -
问:什么是满二叉树?什么是完全二叉树?什么是平衡二叉树?什么是二叉查找树?
满二叉树 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。 完全二叉树完全二叉树是一种特殊的二叉树,满足...原创 2019-03-09 09:56:11 · 8980 阅读 · 2 评论 -
用C/C++编程实现冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。int temp;//外层循环是排序的趟数for (int i = 0; i < arrays.length - 1 ; i++) {//内层循环是当前趟数需要比较的次数for (int j = i+1; j < arrays.length; j++) {//前一...原创 2019-03-06 21:25:58 · 955 阅读 · 0 评论 -
用C/C++编程实现直接选择排序
直接选择排序算法思想:在冒泡排序上做了优化,减少了交换次数,在首轮选择最大的数放在第一项,一轮之后第一项是有序的了,第二轮从第二项开始选择最大的数放在第二项,以此类推,直到整个数组完全有序。public void select_sort(){ // 对应位置的数组下标 int max; // 定义临时变量 int temp; for (int i...原创 2019-03-06 21:27:27 · 286 阅读 · 0 评论 -
用C/C++编程实现堆排序
堆排序的基本思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;void adjust(int arr[], int len, in...转载 2019-03-16 11:12:11 · 317 阅读 · 0 评论