C/C++
Unimen
享受编程,挑战自我!
展开
-
TC 下结构体含float型成员的结构体数组问题
程序代码如下:#include struct stuinf{ int num; float score;//如果换为其他类型可以正常}p[2];int main(){ int i; for(i=0;i scanf("%d%f",&p[i].num,&p[i].score); for(i=0;i原创 2009-10-22 10:43:00 · 1154 阅读 · 0 评论 -
简述C++里assert的使用
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义如下:#includevoid assert( int expression_r );assert的作用是现计算表达式 expression_r,如果其值为假(即为0),那么它先向st转载 2011-09-22 19:30:00 · 742 阅读 · 0 评论 -
查找最小的k个元素
题目为输入n个元素找出这n个元素中最小的k个元素:如n=8,元素依次为1 2 3 4 5 6 7 8 则小的4的元素为1 2 3 4下面上代码,解决方法见解题报告/*解题报告:1、最简单的办法,给所有数据按升序或降序排序,从中取出相应的k个就可以了,最快的时间复杂度为原创 2011-09-22 14:30:49 · 972 阅读 · 0 评论 -
Stack & Heap in C/C++
一、预备知识?程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)? 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ? 一般由程序员分配释放, 若程序员不释放转载 2011-08-26 15:56:37 · 531 阅读 · 0 评论 -
你应当如何学习C++(以及编程)(rev#1)
你应当如何学习C++(以及编程)(rev#1) By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) Javascript是世界上最受误解的语言,其实C++何尝不是。坊间流传的错误的C++学习方法一抓就是一大把。转载 2011-08-28 20:16:22 · 892 阅读 · 0 评论 -
深入探讨vc下C++模板编译模型
写过模板的朋友也许知道,一个模板程序,当编译器看到模板定义时并不立即产生代码,只有在我们用到模板,并对其实例化的时候,才会产生特定的实例。此时,编译器就要访问定义模板的源代码了。如果源代码不可访问,当然,编译器会报错的。记得我初学的时候,采用的是直接将声明和实现全部放在一个.h里转载 2011-09-28 06:46:48 · 873 阅读 · 0 评论 -
memcpy与memmove区别
原型:void *memmove( void* dest, const void* src, size_t count );void *memcpy(void *dest, const void *src, size_t n);函数memcpy从sou原创 2011-09-28 15:22:20 · 710 阅读 · 0 评论 -
如何限制一个类对象只在堆上分配或者只在栈上分配?
1.第一种说法//只在栈上class stackonly{private: void * operator new(size_t Size) { }};//只在堆上class heaponly{private: heaponly转载 2011-10-13 17:58:57 · 712 阅读 · 0 评论 -
C++内联函数(Inline)
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))1.为什么会使用表转载 2011-10-13 18:15:40 · 542 阅读 · 0 评论 -
虚函数实现原理
编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。 编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数的类 中,编译器秘密地置一指针,称为v p o i n t e r(转载 2011-10-10 09:17:38 · 1153 阅读 · 0 评论 -
不用加号求两个数的和
分析:以3 + 5为例 3的二进制为 1 1,5的二进制为 1 0 1,可以这样做:1先给这两个数加起来不考虑进位,这样得到的结果为 1 1 0,会发现与^得到的结果相同,与是先给两个数做^运算;2、接下来考虑进位,两个二进制数相加会有这么几种情况 1 1,0 0, 1 0,原创 2011-09-14 21:45:15 · 3964 阅读 · 0 评论 -
string查找子串的方法
#include #include using namespace std;int main(){ string str1, str2; str1 = "abcdef"; str2 = "bcd"; //一种方法 string::size_type po原创 2011-09-13 16:41:32 · 2623 阅读 · 0 评论 -
__FILE__宏等
C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。__DATE__进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)__FILE__代表当前源代码文件名的字符串文字__LINE__代表当前源代原创 2011-08-11 18:23:53 · 649 阅读 · 1 评论 -
qsort用法
对其的说明:qsort,包含在stdlib.h文件里,函数一共有四个参数,没有返回值,函数原型为:CRTIMP void __cdecl qsort(void*, size_t, size_t,int (*)(const void*, const void*)),形象的说一个典型的用法为:qsort(s,n,sizeof(s[0]),cmp);第一个参数是参与排序的数组原创 2010-03-11 17:10:00 · 764 阅读 · 1 评论 -
memset的进一步理解
memset原型为:extern void *memset(void *buffer, int c, int count);用于把buffer所指的内存区域的前count个字节设置成字符,常用来初始化数组。使用时有两点需要注意:1、其对内存的设置是按照字节进行的:举例说明#include #include int main(){ int a[5];原创 2010-04-17 23:25:00 · 724 阅读 · 0 评论 -
strchr
原型:extern char *strchr(char *s,char c); 用法:#include 功能:查找字符串s中首次出现字符c的位置 说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。原创 2010-04-27 22:03:00 · 567 阅读 · 0 评论 -
scanf,gets小总结
一、scanf1、scanf()忽略空格与回车,而且是没有读进去,换句话说还留在了输入队列中2、返值成功读入几个变量返回值就是多少,到文件结尾时返回EOF3、一个不常用的用法%[...],%[^...],举例说明: 第一个:scanf(“%[1234567]”,string),这时只会读入中括号里面有的字符并且会在末尾加字符串结束符,第二个是相反的意思。 用该种方法可以实现scanf()读带有空格的串:scanf(“%[^/n]”,string)二、gets1、gets()读取到换行为止,将其读入然原创 2010-08-03 01:14:00 · 1105 阅读 · 0 评论 -
注意sizeof 返回值类型
假设有代码片段:int a[]={1,2,3,4,5};int i;for(i=-1;i printf("%d ",a[i]);请问其循环次数是多少?应该是0次,问题的关键在于sizeof的返回值类型,是一个size_t型,而size_t是这样定义的,typedef unsigned int size_t,也就是说它是一个unsigned int型。因此当执行i原创 2010-09-04 13:39:00 · 20851 阅读 · 9 评论 -
关于取模
<br />正数%正数 正<br /> <br />正数%负数 正<br /> <br />负数%负数 负<br /> <br />负数%正数 负<br /> <br />原创 2010-10-13 22:05:00 · 585 阅读 · 0 评论 -
递归时要注意数组越界
<br />有如下代码段:<br /> <br />#include <iostream>#include <cstring>using namespace std;int array[92][8]={0};int c[9]={0};int bVis[3][20]={0};int num=0;void search(int cur){ int i,j; if(8 == cur) { for(j=0; j<8 ;j++) array[num][j] =原创 2011-03-27 13:25:00 · 1926 阅读 · 1 评论 -
Bjarne Stroustrup(C++创建者)的一句话
<br />轻松地使用这种语言。不要觉得必须使用所有的特性,不要在第一次学习时就试图使用所有的特性原创 2011-03-27 11:06:00 · 666 阅读 · 0 评论 -
max函数或宏
<br />1、在g++中,max是个函数而不是宏,其定义在stl_algobase.h头文件中,代码为<br /> <br /> template<typename _Tp> inline const _Tp& max(const _Tp& __a, const _Tp& __b) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept<_Tp原创 2011-05-06 18:08:00 · 1228 阅读 · 0 评论 -
典型的 C++ 程序员成长经历
一个典型的 C++ 程序员成长经历:1. 完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer" 感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, template转载 2012-03-30 17:30:40 · 486 阅读 · 0 评论