企业网站seo数据,小网站 收入,网上订餐网站建设的外文文献,专门做衣服的网站指针和引用的区别指针指向一块内存#xff0c;它的内容是指向内存的地址#xff1b;引用是某内存的别名 引用使用是无需解引用#xff0c;指针需解引用 引用不能为空#xff0c;指针可以为空 引用在定义是被初始化一次#xff0c;之后不可变#xff1b;指针可变 程序… 指针和引用的区别 指针指向一块内存它的内容是指向内存的地址引用是某内存的别名 引用使用是无需解引用指针需解引用 引用不能为空指针可以为空 引用在定义是被初始化一次之后不可变指针可变 程序为指针变量分配内存区域而引用不需要分配内存区域 memcpy和strcpy的区别 memcpy用来内存拷贝的它有指定的拷贝数据长度他可以拷贝任何数据类型的对象 Strcpy它只能去拷贝字符串它遇到’\0′结束拷贝 new和malloc的区别free和delete的区别 malloc与free是C/C语言的标准库函数new/delete是C的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符不在编译器控制权限之内不能够把执行构造函数和析构函数的任务强加于malloc/free。 因此C语言需要一个能完成动态内存分配和初始化工作的运算符new以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 struct和class的区别 1.成员变量 结构在默认情况下的成员是公共(public)的, 而类在默认情况下的成员是私有(private)的。 2.存储 struct保证成员按照声明顺序在内存中存储。class不保证等等 3.继承 struct A { } class B : A{ }; //private继承 struct C : B{ } //public继承 这是由于class默认是privatestruct默认是public。 struct与union的区别.(一般假定在32位机器上) 1一个union类型的变量所有成员变量共享一块内存该内存的大小有这些成员变量中长度最大的一个来决定struct中成员变量内存都是独立的 2union分配的内存是连续的而struct不能保证分配的内存是连续的 队列和栈有什么区别 队列先进先出栈后进先出 指针在16位机、32位机、64位机分别占用多少个字节 16位机 2字节 32位机 4字节 64位机 8字节 如何引用一个已经定义过的全局变量 extern 可以用引用头文件的方式也可以用extern关键字如果用引用头文件方式来引用某个在头文件中声明的全局变理假定你将那个变写错了那么在编译期间会报错如果你用extern方式引用时假定你犯了同样的错误那么在编译期间不会报错而在连接期间报错 全局变量可不可以定义在可被多个.C文件包含的头文件中为什么 可以在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量前提是其中只能有一个C文件中对此变量赋初值此时连接不会出错 语句for( 1 )有什么问题它是什么意思 for( 1 )和while(1)相同。 do……while和while……do有什么区别 前一个循环一遍再判断后一个判断以后再循环 请写出下列代码的输出内容 #includestdio.h main() { int a,b,c,d; a10; ba; ca; d10*a; printf(“bcd%d%d%d”bcd; return 0; } 1012120 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C中应用什么实现? c用宏定义c用inline main 函数执行以前还会执行什么代码 全局对象的构造函数会在main 函数之前执行。 main 主函数执行完毕后是否可能会再执行一段代码给出说明 可以可以用on_exit 注册一个函数它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void); void main( void ) { String str(“zhanglin”); on_exit( fn1 ); on_exit( fn2 ); on_exit( fn3 ); on_exit( fn4 ); printf( “This is executed first.\n” ); } int fn1() { printf( “next.\n” ); return 0; } int fn2() { printf( “executed ” ); return 0; } int fn3() { printf( “is ” ); return 0; } int fn4() { printf( “This ” ); return 0; } The on_exit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to on_exit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to on_exit cannot take parameters. This is executed next. 局部变量能否和全局变量重名 能局部会屏蔽全局。要用全局变量需要使用”::” 局部变量可以与全局变量同名在函数内引用这个变量时会用到同名的局部变量而不会用到全局变量。对于有些编译器而言在同一个函数内可以定义多个同名的局部变量比如在两个循环体内都定义一个同名的局部变量而那个局部变量的作用域就在那个循环体内 描述内存分配方式以及它们的区别? 1从静态存储区域分配。内存在程序编译的时候就已经分配好这块内存在程序的整个运行期间都存在。例如全局变量static 变量。 2 在栈上创建。在执行函数时函数内局部变量的存储单元都可以在栈上创建函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。 3 从堆上分配亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定使用非常灵活但问题也最多。 类成员函数的重载、覆盖和隐藏区别 1.成员函数被重载的特征 1相同的范围在同一个类中 2函数名字相同 3参数不同 4virtual 关键字可有可无。 2.覆盖是指派生类函数覆盖基类函数特征是 1不同的范围分别位于派生类与基类 2函数名字相同 3参数相同 4基类函数必须有virtual 关键字。 3.”隐藏”是指派生类的函数屏蔽了与其同名的基类函数规则如下 1如果派生类的函数与基类的函数同名但是参数不同。此时不论有无virtual关键字基类的函数将被隐藏注意别与重载混淆。 2如果派生类的函数与基类的函数同名并且参数也相同但是基类函数没有virtual 关键字。此时基类的函数被隐藏注意别与覆盖混淆 static有什么用途请至少说明两种 1.限制变量的作用域 2.设置变量的存储域 请说出const与#define 相比有何优点 1const 常量有数据类型而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换没有类型安全检查并且在字符替换可能会产生意料不到的错误。 2有些集成化的调试工具可以对const 常量进行调试但是不能对宏常量进行调试。 堆栈溢出一般是由什么原因导致的 没有回收垃圾资源 简述数组与指针的区别 数组要么在静态存储区被创建如全局数组要么在栈上被创建。指针可以随时指向任意类型的内存块。 (1)修改内容上的差别 char a[] “hello”; a[0] ‘X’; char *p “world”; // 注意p 指向常量字符串 p[0] ‘X’; // 编译器不能发现该错误运行时错误 (2) 用运算符sizeof 可以计算出数组的容量字节数。sizeof(p),p 为指针得到的是一个指针变量的字节数而不是p 所指的内存容量。C/C 语言没有办法知道指针所指的内存容量除非在申请内存时记住它。注意当数组作为函数的参数进行传递时该数组自动退化为同类型的指针。 char a[] “hello world”; char *p a; cout sizeof(a) endl; // 12 字节 cout sizeof(p) endl; // 4 字节 计算数组和指针的内存容量 void Func(char a[100]) { cout sizeof(a) endl; // 4 字节而不是100 字节 } There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers. ( ( a b ) abs( a – b ) ) / 2 冒泡排序算法的时间复杂度是什么 O(n^2) 什么函数不能声明为虚函数 构造函数Constructor 变量在内存中存放的位置 全局变量 全局静态区 全局静态变量 全局静态区 全局常量 有初始化 代码区 无初始化 全局静态区 局部变量 堆栈区 局部静态变量 静态区 局部常量 堆栈区 new和malloc分配空间 堆区 进程间通信方式 管道有名管道无名管道共享内存消息队列信号量socket通信 线程同步方式 临界区通过对多线程的串行化来访问公共资源或一段代码速度快适合控制数据访问 互斥量为协调共同对一个共享资源的单独访问而设计 信号量PV操作为控制一个具有有限数量用户资源而设计 事件用来通知线程有一些事件已 进程和线程的区别 资源进程是拥有资源的一个独立单位线程是不拥有资源。 调度线程作为调度和分配的基本单位进程是作为资源的基本单位 并发性进程之间可以有并发性进行同一个进程中的多个线程是可以并发执行 系统开销进程在创建和撤销的时候由于系统要分配和回收资源导致系统的开销明显大于线程 一个进程可以拥有多个线程。 局部变量和全局变量能否重名 能局部屏蔽全局。在C里使用全局需要使用””。在C语言里extern 虚函数和纯虚函数的区别 虚函数必须实现纯虚函数没有实现 虚函数在子类里可以不重载但是纯虚函数必须在每一个子类里去实现 在动态内存分配的时候析构函数必须是虚函数但没有必要是纯虚函数 面向对象的三大特性四大特性 封装、继承、多态抽象 封装把客观事物封装成抽象的类并且类可以把自己的数据和方法只让可信的类或者对象操作对不可信的进行信息隐藏 继承子类可以拥有父类的属性和方法但父类没有子类的属性和方法 多态允许将子类类型的指针赋值给父类类型的指针 实现多态有二种方式覆盖重载 覆盖是指子类重新定义父类的虚函数的做法 重载是指允许存在多个同名函数而这些函数的参数表不同或许参数个数不同或许参数类型不同或许两者都不同 vi编辑器打开时跳到指定的行 vi 5000 filename int型在Touble C里占多少个字节 2个字节 判断一个单链表是否有环 两个指针指向链表头一个指针每次走一步另一个指针每次走两步若有一个指针先指向为NULL表示这个链表无环。若两个指针重合表示链表有环 刷新缓冲区方式? 换行刷新缓冲区 printf(“\n”); 使用函数刷新缓冲区 fflush(stdout); 程序结束刷新缓冲区 return 0; 类和对象的两个基本概念什么 对象就是对客观事物在计算机中的抽象描述。 类就是对具体相似属性和行为的一组对象的统一描述。 类的包括类说明和类实现两大部分 类说明提供了对该类所有数据成员和成员函数的描述。 类实现提供了所有成员函数的实现代码。 数据库三范式 第一范式没有重复的列 第二范式非主属的部分依赖于主属部分 第三范式属性部分不依赖于其他非主属部分 ASSERT( )是干什么用的 是在调试程序使用的一个宏括号里面要满足如果不满足程序将报告错误并将终止执行。 如果只想让程序有一个实例运行不能运行两个。像winamp一样只能开一个窗口怎样实现 用内存映射或全局原子互斥变量、查找窗口句柄 FindWindow互斥写标志到文件或注册表,共享内存 如何截取键盘的响应让所有的’a’变成’b’ 键盘钩子SetWindowsHookEx