![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
文章平均质量分 65
_stark
这个作者很懒,什么都没留下…
展开
-
今天学到的新知识
1:左值:标识一个特定的位置的值才能作为左值。2:判断表达式的长度不需要对表达式求值。例如:sizeof(a=b+3)并没有向a赋值。3:C语言并不具备布尔类型。4:一些表达式也可以作为左值。例如:a[i+10]=0; 5:define宏与替换的区别宏有参数。6:把宏插入字符串中的技巧:①:利用字符串:#include #define M 9原创 2016-04-03 23:14:47 · 763 阅读 · 1 评论 -
浅谈计算机内存中浮点数的表示
什么是浮点数提到浮点数相信大家一定不会很陌生,浮点数表示对形如V=x*(z^y)的有理数进行编码,它对执行涉及非常大的数字(|V|>>0)和非常接近于0的数字是非常有用的。浮点数在内存中的存储废话不多述,直接进入正题,首先,我们来看看下面这段代码,大家可以自行在自己的编译器上运行一下:#include <stdio.h>int main(){ float a = 0.0; flo原创 2017-01-22 00:17:43 · 1086 阅读 · 0 评论 -
HashTable 哈希表/散列
前言在前面,我们提到过了几种搜索结构的树,二叉搜索树是根据左孩子节点的值小于根节点,右孩子节点的值大于根节点而建立的,当我们把n个数据插入到二叉搜索树中,最好情况下(数据插入后是一颗完全二叉树)我们查找数据的时间复杂度为O(lg(N)),但是当我们按照一定的顺序往二叉搜索树中插入数据时,它会呈现一个线性的状态,这时候查找数据的时间复杂度为O(N).为了对这种情况进行优化,我们提出了AVL树的结构,A原创 2016-11-04 20:46:10 · 746 阅读 · 0 评论 -
C++::智能指针
1.智能指针的引入场景先来看看以下这种场景void fun(){ int *Pa = new int(10); // // if (1) throw 1; // delete Pa;}void test1(){ try { fun(); } catch (...) {原创 2016-09-04 09:35:04 · 439 阅读 · 0 评论 -
static关键字其实一点也不安静
static关键字在编程中非常容易混淆,因为它用于不同的“上下文环境”有不同的作用和意思,现在我们来吧static关键字进行一个总结,希望能对看到这篇文章的人能有所帮助。C语言中static关键字主要有以下作用:1、修饰变量: static可以修饰全局变量和局部变量。它们都存储在静态区当中。a、静态全局变量: static修饰的全部变量称为静原创 2016-08-16 12:46:19 · 594 阅读 · 1 评论 -
剑指Offer___关于复杂链表的复制算法剖析
本文的源代码和测试代码:https://github.com/clearoff/learngit/blob/master/ComplexLinklist.c1、复杂链表的定义: 一般的,我们把只有一个数据于和一个指针的节点所组成的链表叫做单链表,由单链表我们引出了复杂链表的定义,如下图:【复杂链表在C语言中的定义】:typedef struct ComplexLi原创 2016-06-17 17:26:59 · 738 阅读 · 0 评论 -
与单链表有关的算法问题
单链表结构的定义:typedef int DataType;typedef struct LinkNode{ DataType data; struct LinkNode *next;}LinkNode, *pLinkNode;typedef struct Linklist{ LinkNode *phead;}LinkList, *pLinkList; //封装头节点,原创 2016-06-10 22:28:30 · 940 阅读 · 0 评论 -
面试题——找单独数字
数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。这道题是:数组中除了一个数字外,其他数字都出现了两次这道题的升级版,在其他数字都是两个的数组中找出单独的数字,由于两个相同的数字经过异或运算后为0,所以我们只要让数组中的每一个数字相互异或就能找到那个单独数字。现在问题换成了其他数字都出现三次了,如果让数组中的数字都两两异或,出现原创 2016-06-05 17:26:09 · 1262 阅读 · 0 评论 -
用冒泡排序法实现qsort函数
—、qsor函数:qsort函数是一个能排序任何数据类型的函数,让我们先来了解一下qsort函数的形参和返回值。 void qsort( void *base, size_t num, size_t width, int (__cdecl*compare(const void *elem1, const void *elem2 ) );函数原型中qsort函数有四个参数,分别为:原创 2016-05-01 20:45:29 · 1289 阅读 · 0 评论 -
稍微麻烦一点的指针
函数指针:(函数指针就是指向函数的一个指针,它是一个指针,指向一个函数) type (*prr1)(type1,type2); //函数指针的形式(type为函数返回值的类型,type1,type2为函数形参的类型)1:函数指针的调用: 方法: &+函数名 或 直接函数名2: 函数指针的数组 例如:char* (*pf[3])(in原创 2016-05-01 20:23:31 · 346 阅读 · 0 评论 -
数组读书笔记
(注:下标的引用优先级高于间接访问)1:数组名的值是一个指针常量,也就是数组第一个元素的地址,只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。2:不能用赋值符把一个数组中的所有元素复制到另一个数组,只能通过循环来实现。3:C的下标引用和间接访问时一样的。例如: int *ap=arr; *(ap+2)ap[2];4: ap[原创 2016-04-16 10:51:59 · 702 阅读 · 0 评论 -
函数调用的过程
1:栈帧①:关于栈:A:首先明确一点,栈是向下生长的,所谓的向下生长,即从高地址向低地址延伸。即变量从栈的高地址向低地址存储。B:其次,介绍一组寄存器变量,ebp在未受改变时始终指向栈底,其作用常常用来寻址。C:寄存器esp会随着数据的出栈和压栈而移动,在未受改变时始终指向栈顶。2:函数的调用过程见下图: mainCRTStartup原创 2016-04-15 22:39:22 · 595 阅读 · 0 评论 -
剑指offer剖析__空格替换字符串问题
问题:在"we are happy"这个字符串中,将所有的空格替换成字符串%20.分析:如果我们不定义一个新的字符数组,就在原字符数组中进行替换,要将一个字节的空格替换成三个字节的字符数组%20,这会产生数组的越界访问,如果允许我们开辟一个新的空间来存放替换后的字符串,则问题将会变得非常简单。设置两个指针分别指向新旧字符串首元素,遍历原字符串,如果碰到空格就在新字符串上填入“%20”,否则原创 2016-05-10 22:18:18 · 1581 阅读 · 1 评论 -
指针总结(—)
1:指针常量 *100=25 (假设100是a的地址,如果你想把a的值改成25,使用*100=25是否可以?) 答案:这样做是错误的,字面值100的类型是整形,而解引用操纵只能对指针类型进行操作,所有应该成 *(int *100)=25;2:指针变量pa:指针变量p里面存储的任何数据都被当作地址处理。b:指针变量的大小和*前面的数据类型无关。c原创 2016-04-26 20:54:00 · 903 阅读 · 0 评论 -
创建和引用单链表
首先让我们看看单链表的定义:单向链表:1:单链表有一个头节点head,指向链表在内存的首地址。2:链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。3:链表按此结构对各节点的访问需从链表的头找起,后续节点的地址由当前节点给出。4:无论在表原创 2016-04-09 12:06:23 · 2461 阅读 · 0 评论 -
实现顺序表以及顺序表的简单运算
自定义头文件 my_list.h#define _CRT_SECURE_NO_WARNINGS#ifndef __MY_LIST_H__#define __MY_LIST_H__//文件功能:实现线性表的基本运算//1:顺序表的插入预算//2:顺序表中元素的逆序//3:顺序表的删除运算#define max_size 1024 //定义顺序表的上限长度原创 2016-04-09 09:23:58 · 1122 阅读 · 0 评论 -
如何实现翻转一串二进制代码:
如何实现翻转一串二进制代码:方法一; 指数法 for(i=0;i { ret=value & 1; //value为需要翻转的二进制序列 sum=sum+(ret*pow(2,(31-i))); //每次&1取最低位然后乘以起翻转后的权的二次幂;原创 2016-04-06 21:25:02 · 1270 阅读 · 0 评论 -
C语言结构体的内存对齐
什么是结构体?学过C语言的大家应该都学到过结构体,结构体是一种聚合数据类型,它可以把不同类型的数据存储在一起,我们把结构体中存储的数据叫做结构体成员。结构体的内存对齐了解了结构体后,我们来谈一谈结构体在计算机系统中是如何存储的,首先,我们来看看下面这段代码:struct A{ char a; int b; char c;};int main(){ struct原创 2017-02-02 15:30:15 · 596 阅读 · 0 评论