![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言编程
文章平均质量分 71
彭迁
这个作者很懒,什么都没留下…
展开
-
杂记
最近遇到的问题很杂乱,没有一个鲜明的主题来写日志,只能以杂记的形式记录下来。以下分为几点: (这是新浪博客的日志,现在开始在CSDN写了。)1关于对C语言中数据类型的理解: 写程序时的数据类型的定以的本质是告诉编译器以多大的内存空间来存储数据,另一方面也方便程序员根据不同环境,来使用不同的数据类型。例如下面的语句: int a=30;//1c原创 2013-08-28 17:45:44 · 644 阅读 · 0 评论 -
双向链表基本操作及代码优化技巧
以下是本人对双向链表的相关操作及相应的代码优化学习笔记1 双向链表的插入有4种情况:1.1 插入到链表的开始位置1.2 插入到链表的中间位置1.3 插入到链表的结束位置1.4 链表为空,既插入到开始位置 同时也插入到结束位置。1.5 以下是双向链表的示意图:根据分析,写出代码如下:代码 1 :#include#includetypedef str原创 2013-10-30 15:59:19 · 1739 阅读 · 0 评论 -
单向链表操作中的二级指针的运用
前段时间在陈皓的博客上看到了一片关于利用二级指针删除链表的操作,讲的是利用二级指针高效的删除链表中的某个节点,当时没怎么看懂,代码太精简了。后来下来仔细的研究了一下,后来又仔细研究了>书中的有关指针的介绍,还是慢慢的理解了二级指针在链表中的妙用。现在就谈谈二级指针在链表中的应用吧,在这里主要探讨3个函数,单向链表的快速创建,插入,删除,查找操作。1 下面是链表的创建函数:#incl原创 2013-10-24 15:21:12 · 1373 阅读 · 4 评论 -
浅谈C语言中的回调函数
虽然网上有许多讲回调函数的例子,下面还是聊聊自己对回调函数的理解吧,若有理解偏差的地方,还希望看过的朋友能提提宝贵意见,定当感谢不已。1回调函数定义:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方原创 2013-10-20 17:29:49 · 972 阅读 · 0 评论 -
关于C语言字节对齐之结构体 共用体占用字节数的快速计算方法总结
前几天在做项目时,出现了一个套接字通信的一个问题,看似客户端和服务器端使用的一个相同的结构体,但是就是在服务器端不能把客户端发送的数据全部显示的打印出来。查找了好久的错误,才发现原来两端的结构体看似相同,但其两端结构体占用的字节数是不一样的。才导致了服务器端不能正常的显示出全部内容。大概情况是这样的,client端定义结构体如下:typedef struct _u64{ lo原创 2013-10-12 09:54:11 · 3399 阅读 · 1 评论 -
C语言字节对齐
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访转载 2013-10-10 23:27:01 · 592 阅读 · 0 评论 -
关于不同数据类型存储方式的的理解
计算机的内存中,所有使用的数据都是以二进制的形式线性的存储在内存中。各种编程语言中的定义了很多种不同的类型,根本上讲这些不同类型的变量的存储都是以二进制线性存储的,之所以要定义出这么多类型,只是方便用户(程序员)采用不同的方式引用或者处理这些不同类型的变量。不同的数据类型表现形式不同,但存储的的本质是一样的。看看下面的代码 就知道我在说什么了。#include#include type原创 2013-10-10 22:43:26 · 2993 阅读 · 0 评论 -
用一个函数实现链表的创建
在我以前有关链表的创建,都是用的多个函数实现的。首先要创建一个节点 然后再向节点后面插入一个个节点,即生成一条链表。至少用两个函数实现的,一个创建节点函数 ,一个插入函数。最近发现原来用一个函数即可实现上述功能,通过反复调用这个函数就可实现一条链表的创建,贴如下代码:typedef struct _node{int a;int b;struct _node *next;原创 2013-09-18 09:33:12 · 4437 阅读 · 1 评论 -
关于寄存器操作的一些常用方法
1关于寄存器操作的一些常用方法: 1.1 描述:要操作寄存器的某一位或则某些位,可以把相应的数据左移到相应位上,再做处理。文字描述太拗口。直接举实例吧。例如:1.2 寄存器A 有32位,现在要让第10位 第11位 分别为1和0,操作如下: A&=~(0x03A|=0x011.3寄存器A 有32位,现在要让第10位,第11位,第12位 分别为0、0、1,操作如下:原创 2013-09-05 16:29:40 · 2725 阅读 · 0 评论 -
C语言基础理解
有些基础的问题,看似很简单,平时也没怎么注意,但是理解不深刻的话,可能就在关键的地方出错了,导致严重的后果。C语言的掌握是个实践的过程,单靠掌握一些基本的东西,不实践的话,永远也不能理解其中的精髓。也只有在实践中来能深刻理解某些看似简单的原理。1 关于结构体类型的指针的理解:1.1首先要理解指针的本质,在32位系统中,可以再指针变量看成int型的变量,占4个字节,不管指针变量前面如何的修饰原创 2013-09-24 19:58:15 · 667 阅读 · 0 评论