![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序语言
文章平均质量分 73
jiangnanyouzi
这个作者很懒,什么都没留下…
展开
-
(C语言)由十六进制输出所想到的 (一,引子)
最近再看网络方面的程序设计,由于tcp协议是基于字节流的形式,某时突然想到如何进行变量的十六进制输出。故此小结了一下这篇文章。例子是用C语言给出的。先说一下我的编程环境,我是在windows操作系统下用vs2005进行编译,cpu是intel的P4,因此那些变量的字节数分别是: char 是 1 字节 short 是原创 2008-10-22 08:38:00 · 5332 阅读 · 0 评论 -
c++对象模型笔记:指针类型转换
这篇笔记说的是关于c/c++中的类型转换的东西,重点是与指针有关的类型。1、强制类型转换看一下这个c代码:int a = 0x123456; //0x是十六进制的表示法char c = (char)a;printf("%d/n", c);在我的编译环境里输出的是什么呢? 是86,怎么得来的呢?(我的编译环境见“概述”)int a的内存如下(左边是低地址的内容,右边是高地址的内容):0x56 0原创 2009-01-12 13:09:00 · 4823 阅读 · 8 评论 -
c++对象类型笔记:private,protected,public
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2009-01-12 15:03:00 · 1971 阅读 · 2 评论 -
c++对象模型笔记:struct 和 class
在c++里面,struct 和 class 有没有区别?有的!但是仅有一个,那就是struct的成员访问的默认权限是public,而class则是private的。比如:class A{//a,b是private成员 int a; int b;};struct B{//c,d是public成员 int c; int d;};就这一个区别而已!那么,为什么还要保留这个struct原创 2009-01-12 16:28:00 · 1725 阅读 · 1 评论 -
TCP/IP 中校验和的计算方法
读《TCP/IP详解》时候看到IP首部校验和算法中叫做“每16bit反码求和”,于是我以为是每一部都先反码在求和。所以我写的过程如下:(以如下数组为例 unsigned short a[10] = { 0x4500, 0x059a, 0x82b9, 0x4000, 0x3206, 0x4f79,0xa66f, 0x08ee, 0xc0a8, 0x0126};因为IP首部长20B,就是10个16进原创 2008-11-19 11:18:00 · 4087 阅读 · 1 评论 -
C++对象模型笔记:对象实例内存布局的小小结
前一篇笔记中已经说出了类的对象实例在内存中的三种可能的内存布局,其中,最后一种是c++编译器正在使用的。这种布局的特点如下(先抛开虚函数方面的信息,说一般的) 1、非静态(non-static)数据成员,每个对象实例的内存空间里都有一份; 2、静态(static)数据成员,静态和非静态的成员函数:整个内存空间里面仅有一份(对象实例的内存空间是没有这方面的信息的) 原来,转载 2009-01-14 15:48:00 · 1472 阅读 · 1 评论 -
C++对象模型笔记:对象的三种内存布局
下面的C++代码定义了一个类Point:class Point{public: Point(float xval); virtual ~Point(); float x() const; static int PointCount();protected: virtual ostream& print( ostr原创 2009-01-14 13:38:00 · 2297 阅读 · 1 评论 -
C++对象模型笔记: Name Mangling与重载
上一篇笔记里面说到,如果c++的成员函数都是全局的,怎么区分两个类中的同名的成员函数调用,例如:下面定义了2个类Point1,Point2的对象p1,p2;其中Point1,Point2都有成员函数print: Point1 p1;Point2 p2;p1.print( );p2.print( ); 编译器怎么区分呢? 其实,类中的成员函数pri原创 2009-01-15 13:01:00 · 2881 阅读 · 0 评论 -
C++对象模型笔记:dynamic binding
C++对象模型笔记:dynamic binding 编译器对于多态的实现是怎样的呢?下面请看一个例子: Class Point{Public:Virtual void print();……}; Class Point2D : public Point{Public:Virtual原创 2009-01-16 14:15:00 · 2507 阅读 · 4 评论 -
c/c++结构体对齐小结
因为我看C++对象模型的时候,遇到了几个内存布局都是有关于对齐的一些细节,故此对结构体对齐再做一份小结,有人说:结构体对齐这个东西是依赖于编译器的,因此不用去研究,真的嘛? 也许是,也许不是,要看你是做那个行业的了,如果你是做系统地层,网络通讯,嵌入式系统的,一个字节的节省,也许对你是很大的期望呢。虽然具体的对齐方式是因编译器而异,但是对齐的基本原理是不变的,那个原理也许能指导我们编写程序原创 2009-01-16 10:23:00 · 12905 阅读 · 4 评论 -
linux 守护进程(daemon)的创建方法
用C语言来创建守护进程方法大致如下:int init_daemon(const char *pathname){ struct sigaction act; int max_fd, i, ret; char buf[100]; /* 第一次调用fork,为setsid做准备 */ ret = fork(); if( 0 > ret ) { f原创 2008-11-24 13:51:00 · 1146 阅读 · 0 评论 -
vs2005开发程序引起的:"应用程序初始化失败"的问题
这个问题是这样的:每次别人重装系统后,运行那些用vs2005开发的应用程序,很多时候都会出现:“应用程序初始化失败....”之类的提示框。 这个问题我两年前就遇到,结果这两年多来,时不时的都碰到这个问题,这时候还经常忘记解决方案~,汗,记忆力真差,刚才又有人遇到了,所以现在记录在此。 这个问题通常都是新装的系统里面没有vs2005需要的dll引起的,最简单的解决方法就是到微软的网址原创 2009-10-13 17:44:00 · 1335 阅读 · 0 评论 -
(转)网上摘抄:图像处理的网上资料
(转)网上摘抄:图像处理的网上资料 作图像处理方面的研究工作,最重要的两个问题:其一是要把握住国际上最前沿的内容;其二是所做工作要具备很高的实用背景。解决第一个问题的办法就是找出这个方向公认最牛的几个超级大拿(看看他们都在作什么) 和最权威的出版物(阅读上面最新的文献),解决第二个问题的办法是你最好能够找到一个实际应用的项目,边做边写文章做好这几点的途径之一转载 2009-11-09 19:51:00 · 1158 阅读 · 0 评论 -
C++对象模型笔记:概述
本系列文章是对Lippman的《深度探索c++对象模型》(“Inside the c++ object model”)的读书笔记。1、关于作者Lippman:c++首个编译器的开发者之一,所作的c++方面的书籍有:《c++ primer》:c++的百科全书,和c++之父的《c++ programming language》齐名。《Inside the c++ object model》:讲述c++原创 2009-01-12 09:19:00 · 1372 阅读 · 0 评论 -
linux 库文件 生成与使用
1、linux库文件分为静态库和动态库两种。静态库习惯以.a 结尾,而动态库习惯以.so(shared object)结尾。而且必须以lib开头。2、静态库的原则是“以空间换时间”,增加程序体积,减少运行时间;生成:在编译时候,先生成目标文件.o,然后用ar文件对目标文件归档,生成静态库文件。例如:ar -rc libtest.a myalib.o (注意:ar -rc 目标 .o文件名),目标一原创 2008-11-17 19:08:00 · 10592 阅读 · 0 评论 -
删除串中相同的元素:一个做法
有一个问题,如何删除两个字符串相同的字符,比如str1 = "abcdeafg" str2 = "blimklaaaaa"要得到:str1 = "cdefg" str2 = "limkl"下面直接写程序,这个程序是我写的,但是思想是别人的,呵呵为了方便讨论,假设str1 和 str2 都是ascii码void delSameChs(char *str1, char *str2){ //a原创 2009-01-08 16:55:00 · 1243 阅读 · 1 评论 -
C/C++中链表的三种设计方案
在初学数据结构的时候,第一个要学的就是链表,然而,当时我的注意力都是集中在链表的实现上,比如链表的初始化,增删查改的操作实现等,没留意到链表在实际应用时如何使他更具一般化,使代码能重用。现在工作一年之余,顺便小结一下链表的几种用途,以便以后查看。1. 一般做法,用具体数据结构封装链表。struct Data{ int data; struct Data *next;};上边这个例子,在原创 2008-10-28 09:06:00 · 6596 阅读 · 8 评论 -
(C语言)共用体union的用法举例
以前在学校学习C语言的时候一直搞不懂那个共用体union有什么用的。工作之后才发现它的一些妙用,现举例如下:1. 为了方便看懂代码。比如说想写一个3 * 3的矩阵,可以这样写:[注:下面用红色部分标记的地方是后来添加上去的,谢谢yrqing718的提醒!]struct Matrix{ union { struct原创 2008-10-27 15:14:00 · 104516 阅读 · 16 评论 -
12个球,用天平称三次找出唯一一个不同质量的球的方法
在网上看到的一个方法:分三组,记为A1,A2,A3, A4; B1, B2, B3, B4; C1, C2, C3, C4;switch( 比较(A1A2A3A4, B1B2B3B4) ) //第一次比较{case =: swicth( 比较(C1, C2)) //第二次比较 { case >: if( C1 > C3) return C1(较重); //第三次原创 2008-11-10 13:20:00 · 2410 阅读 · 0 评论 -
关于链表的几个常见的算法
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2008-11-11 09:57:00 · 905 阅读 · 0 评论 -
技术面试的经历
有一次技术面试,经历如下:1、那家公司是一家做手机开发应用程序的。我去到之后,先做笔试,笔试题目好像比较简单,如下所示:(1)、下面程序调用f(111)的结果是:int f(int m){ int count = 0; while( m ) { m = m & (m - 1); count++; } return count;}其实是考查参原创 2009-01-05 14:04:00 · 1339 阅读 · 0 评论 -
乘方的算法
从其他地方看见的一个乘方的算法,来过来整理一下,做做笔记:1、实现如下函数:long power(int n, int p) ,功能是n的p次方long power(int n, int p){ int k = 1; while ( 1 != p ) { if( 1 == ( p & 0x01 ) ) k *= n; //保留中间结果原创 2009-01-06 13:05:00 · 5393 阅读 · 0 评论 -
c++ 虚函数的实现机制:笔记
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private: int a};class转载 2009-01-06 13:35:00 · 43783 阅读 · 18 评论 -
C++虚基类的实现机制:笔记
在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成员(3)、p是基类类型的原创 2009-01-06 14:33:00 · 13418 阅读 · 13 评论 -
杂题:一些程序基础的小题目
这些是以前面试过或者是看过的程序题目,现在先记下来,以后翻翻。1、十进制数n转二进制(1)、每次和1按位与(n&1),n >> 1(2)、c++中用bitset:bitset bs(n);2、n的二进制有几个1count = 0;while( n = n&(n-1) ) /* 每次少一个1 */ count++;关于指针的题目。(1)、char s[] = "abcdefghijk";ch原创 2008-11-13 14:51:00 · 566 阅读 · 0 评论 -
MFC消息映射的原理:笔记
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2009-01-06 17:28:00 · 5857 阅读 · 3 评论 -
linux C项目make:不能更新 的 一个原因
这个问题在昨天工作中遇到,先记一下自己的探索的结果。大致问题如下:程序有3个文件组成,如下显示(工作项目当然要保密的嘛,所以另外自己写了个最简单的小程序来说明问题)/* fun.h */#ifndef FUN_H#define FUN_H#include void fun(int f);#endif/* fun.c */#include "fun.h"void f(int f){ printf("原创 2008-11-15 19:22:00 · 3604 阅读 · 1 评论 -
(C语言)头文件实现的函数
在C语言里面,有时候为了方便(方便的同义词是偷懒),函数就直接在头文件里面实现了。那么这样子有什么问题呢?下面举个例子,这个例子只有3个文件/* fun.h */#ifndef FUN_H#define FUN_Hvoid base(){};void fun();#endif /* fun.c */#include "fun.h"void fun(){ base();}/* main.c *原创 2008-11-15 20:50:00 · 14209 阅读 · 0 评论 -
(转)网上摘抄:计算数学研究方向及网上资料
(转)网上摘抄:计算数学研究方向及网上资料<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-p转载 2009-11-09 20:01:00 · 5591 阅读 · 0 评论