c/c++基础知识
liujinxunhappy08110
这个作者很懒,什么都没留下…
展开
-
网上流传的一道百度笔试程序阅读题
最近在网上看到了一道百度的程序阅读笔试题,觉得很考基础知识,拿出来与各位分享一下,struct st_t{int status;short* pdata;char errstr[32];};st_t st[16];char* p = (char*)(st[2].errstr + 32);printf("%d/n", (p - (char*)(st)));原创 2010-03-26 10:01:00 · 599 阅读 · 2 评论 -
方法重写(overriding)与方法重载(overload)的区别
<br />方法重写(overriding)与方法重载(overload)都是C++语言中实现多态性的方法。<br />方法重写(overriding)是实现父类与子类之间多态性的方法,如果在子类中的方法定义了与父类中相同的函数名称和参数,则子类对象在使用此方法时,将调用子类中的定义,相当于父类中的方法被“屏蔽”;<br />方法重载(overload)是实现同一个类中的多态性的方法,如果同一个类中定义了多个同名函数,它们有不同的参数个数或者不同的参数类型,则称为方法重载(overload),方法重载(ov原创 2010-07-13 22:53:00 · 795 阅读 · 0 评论 -
如何输出源文件的标题和当前执行行的行数
/**************************** *功能:输出源文件的标题和当前执行 * 行的行数 *目的:知识学习****************************/#includeusing namespace std;void main(){ int line=__LINE__; char*file=__FILE__;原创 2010-04-20 15:22:00 · 2156 阅读 · 0 评论 -
结构体指针
#includetypedef struct _AA{ int a; int b; char c;}AA;int main(){ int n, m; AA a; AA *p; p = &a; n = (char *)(p+1)-(char *)p; m = (AA*)(p+1) -(AA*)p; printf("%d,%d",n,m)原创 2010-04-20 15:02:00 · 304 阅读 · 0 评论 -
C++的头文件
最近在看CSDN博客的过程中,经常看到某些博客上出现的一些头文件不是很熟悉,于是我总结了一下C++的头文件,供以后复习使用 C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include原创 2010-04-02 00:12:00 · 226 阅读 · 0 评论 -
总结一些库函数的字符串处理函数源代码
(1) strstr:char* _strstr(const char* str1,const char* str2){ assert(str1!=NULL&&str2!=NULL); int i=0,j=0,k=0; for (i=0;str1[i];i++,k=i,j=0) { while(str2[j]&&str1[原创 2010-03-31 19:46:00 · 445 阅读 · 0 评论 -
C语言动态生成二维矩阵
最近在做项目的过程中,需要写一个矩阵求逆的算法,需要动态生成二维数组,我总结了下C语言动态生成二维数组的代码,假设生成一个4X4的矩阵#define N 4int ** a = (int **)malloc(sizeof(int)*N);for(int i = 0;i < N;++i){ a[i]=(int*)malloc(sizeof(int)*N);}//释放动原创 2010-03-31 16:57:00 · 1172 阅读 · 0 评论 -
关于初始化的一些总结
1.编译器提示非法初始化:char *p = malloc(10); 原因:可能p是静态变量或者非局部变量,函数的调用只能出现在自动变量(即局部非静态变量)中;2.向字符串常量赋值导致程序崩溃:char *p = "fuck uestc"; 当向p[i]赋值时会导致程序崩溃,因为这样定义的p会被编译器认为是字符串常量,存在于只读内存的,是不能写改变的;3.函数指针的初始化原创 2010-04-13 10:20:00 · 324 阅读 · 0 评论 -
变量和函数声明和定义的区别
用惯了IDE开发工具,最头疼的可能就是出现链接错误(link error),因为链接错误不像编译错误那样能够指定出程序的具体出错位置(编译错误主要是语法错误),编译主要就是将一个编译单元(.cpp(.c)文件与它相应的头文件)链接成一个.obj文件,链接错误主要就是重复定义变量等;声明和定义的区别: 函数或变量在声明时,并没有给它实际的物理内存空间,它有时候可以保证你的程序编译通过, 但是原创 2010-04-13 09:37:00 · 1107 阅读 · 1 评论 -
关于类大小的一些问题
1.编译器会为每一个含有虚函数的类分配一个虚函数表,并有一个虚指针指向这个虚函数表;2.sizeof()只能计算在栈上分配的空间,因此不会计算类静态成员的大小;3.空类的大小是1个字节;class A{public: int a; void Function();};class B{public: int a; virtual v原创 2010-04-11 10:22:00 · 250 阅读 · 0 评论 -
一道程序阅读题目
#include using namespace std;class A{ public: A():i(1){} int i; }; class B: public A{ public: B():j(3){} int j; }; int hack(A* p, int c原创 2010-04-11 10:17:00 · 568 阅读 · 1 评论 -
一些基础知识的总结
1.链表和数组的比较链表:链表可以支持动态内存大小,插入和删除的速度快,空间开销大,不支持随机访问;数组:数组的大小不能动态扩充,支持随机访问,数组在内存中逐个存放;2.C++中为什么用模板类。(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的,因此具有很高的可复用性。(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平原创 2010-03-29 21:08:00 · 388 阅读 · 1 评论 -
从一道程序阅读题想到的
union A{ int i; char x[2];}a;void main(){ a.x[0]=10; a.x[1]=1; printf("%d",a.i);} 程序的输出结果是266,也就是16进制数0x010A(内存占用情况)的值,因为联合体低位存放于低地址,高位存放于高地址,而且联合体所有成员是公用一块内存空间的,对联合体的不同成员赋原创 2010-03-26 16:43:00 · 577 阅读 · 1 评论 -
内存对齐
#include typedef union student { char name[10]; long sno; float score[4]; }STU; void main() { STU a[5]; printf("%d/n",sizeof(a)); }原创 2010-03-26 14:37:00 · 289 阅读 · 1 评论 -
关于宏
<br />随便写下有关宏的概念,宏在C语言里提供了一个类似函数的功能,可以提高代码的运行速度,编译器对宏括号里面的“参数”(并不是真正意义上的参数)提供的是一一置换的操作,因此必须小心地将整个宏及宏里面的参数都用括号括起来,不然在做宏替换的时候就会产生副作用,简单地举个例子:<br />#include<stdio.h>#define M(x,y) (x/y)void main(){ int a; a = M(4+4,4); printf("%d",a);}<br />这段代码原创 2010-07-21 21:18:00 · 337 阅读 · 0 评论