C/C++
javaadu
这个作者很懒,什么都没留下…
展开
-
c语言编译过程详解
c语言编译过程详解 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。编译过程编译过程又可以分成两个阶段:编译和会汇编。编译 编译是读取源程序(转载 2010-12-11 21:57:00 · 766 阅读 · 0 评论 -
setprecision和setiosflags函数
1、setprecision 也是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是设定浮点数小数点后的位数;setprecision(2) 的意思就是小数点输出的精度,即是小数点右面的数字的个数为2,C++默认的流输出数值有效位是6。。2、#include 它是I/O流控制头文 件,就像C里面的格式化输出一样.以下是一些常见的控制函数的: dec 置基数为10原创 2012-04-13 16:33:44 · 3386 阅读 · 0 评论 -
孙鑫教程第三章小测试程序
#include //定义一个基类,模拟CWinAppclass Base{public: Base();// virtual void fn();/*测试虚函数结果:call the Derived's fn*/ void fn();/*测试非虚函数结果:call the Base's fn*/ Base *p;};Base::Base(){ p = this;//thi原创 2012-04-15 17:05:12 · 1645 阅读 · 1 评论 -
scanf在输入整型数据和字符型数据时的不同
/*C语言中读取整型数据的小程序段*/#include int main(){ int n,i; int array[25]; while (scanf("%d",&n),n!= EOF) { for ( i = 0; i < n; i++ ) scanf("%d",array+i); for ( i = 0; i < n; i++ ) printf ("%d "原创 2012-04-16 14:12:03 · 6179 阅读 · 0 评论 -
GDB的使用,无他,唯需手熟尔
简介:GDB是GUN发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1.启动调试程序.2.让被调试的程序在指定的位置停住(即可以设置断点)。3.当成被停住时,可以检查程序的状态(如变量值等等)。如何启动GDB?启动GDB很简单,如下所示:gdb 调试程序名 例如 :gdb a或者:gdb file 可执行文件名例如:g转载 2012-09-24 10:35:16 · 911 阅读 · 0 评论 -
OOP和Linux内核的一点思考
一个理解:面向对象的出现是为了解决大型软件项目中代码复用性和代码可维护性的两个关键问题;相对于面向过程的语言(C/basic等)将要解决的问题的模型构建于头脑中,而写出的代码是基于机器的空间,面向对象语言在分析问题时候的层次更高一层,将要解决问题的模型利用class的概念表示出来,这样我们利用UML建模工具可以帮助我们建模。类似的,在学习软件架构的过程中,目前流行的SOA、面向方面等思想的意义在于原创 2013-03-22 20:59:09 · 1917 阅读 · 1 评论 -
wait和waitpid详解
wait的函数原型是: #include #include pid_t wait(int *status); 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wai转载 2013-04-24 14:08:23 · 686 阅读 · 0 评论 -
实现随机抽样【随机数生成问题】
参考资料:C语言函数库1、rand()定义: int rand(void);返回值:返回一个伪随机数,该数的范围是:[0,RAND_MAX)2、srand()定义: void srand(unsigned int seed);返回值:该函数是随机数发生器的初始化函数;如果使用相同的种子给rand用,那么rand()会产生相同的伪随机数。常用的原创 2013-09-29 10:15:07 · 1681 阅读 · 0 评论 -
C程序的内存分配
在做一个练习时遇到的问题,传送门:C语言随机数我在栈空间申请了过多的内存,导致栈溢出,发生栈错误。。。由此,找到了这个PPT,讲解C程序中的内存分配:C程序内存分配原创 2013-10-31 23:04:22 · 566 阅读 · 0 评论 -
java读取配置文件属性
在项目开发过程中,有时需要将其中用到的变量值在一个文件中统一管理,首先我选到了config.properties文件;下面这个代码是用于读取其中的变量值的类:package com.modem.test;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;原创 2014-01-20 11:32:30 · 771 阅读 · 0 评论 -
关于变位词的一点总结和思考
(1)《编程珠玑》中提到的一个问题:给定一个英文字典,找出其中的所有变位词集合。例如,“pots”、“stop”、“tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母的顺序来得到。解答:编程珠玑:sign对每一个单词排序,得到标识--->sort对标识排序--->squash输出结果我自己的想法:sign--->hash处理,每一个标识对应一个hash插槽--->输出结原创 2014-03-04 09:59:05 · 1008 阅读 · 0 评论 -
求职面试--复习笔记2
1、在c++中,class和struct 的区别是什么?2、初始化列表和构造函数初始化的区别是什么?原创 2014-04-22 14:51:01 · 739 阅读 · 0 评论 -
LeetCode刷题:Reverse Words in a String(翻转字符串中的单词)
题目Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".click to show clarification.Clarification:What con原创 2014-07-16 21:16:49 · 1103 阅读 · 0 评论 -
C++ primer学习笔记_6_函数---函数定义、参数传递
习题参考:6.14 举一个形参一原创 2014-05-27 16:25:58 · 642 阅读 · 0 评论 -
C/C++ 关于数组和指针的总结
1、数组的声明形如a[d],其中a是数组的名字,d是数组的维度,编译的时候数组的维度应该是一直原创 2014-07-24 11:19:17 · 916 阅读 · 0 评论 -
*****面试笔试总结
1、如何实现malloc()?请说明malloc()和free()的原理?答:参考《》原创 2014-07-24 13:59:00 · 1026 阅读 · 0 评论 -
const(一)
今天编写一个字符窜处理函数,因为不想让字符窜在子函数中被修改,因此传参数时,将参数设置成了常量指针,代码如下: 1 /* 2 *作者:杜琪 3 *功能:在一个字符窜中进行搜索,查找所有在一个给定字符集合中出现的字符 4 *时间:2012.3.21 5 *心得:1、const的用法,编译时有警告? 6 *答:常量指针只能赋值给常量指针 7 * */ 8原创 2012-03-21 12:48:53 · 4450 阅读 · 1 评论 -
指针(二)
1、指向数组的指针例子:int a[]={'a','b','c'};int *p=a;则*(p+i) 等价于a[i]亲,注意不要越界噢,尤其是处理字符窜的时候,注意\0!!2、指针数组还是一个数组,只不过数组元素是指针了例子:char *argv[]就非常典型3、指针与字符窜处理字符窜的时候要主意\0这个小子例子: /*原创 2012-03-19 20:51:49 · 669 阅读 · 2 评论 -
栈内存与堆内存
一、程序在编译的时候占用的内存分为以下几个部分: 1 、栈区( stack )— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.2 、堆区( heap )— 亦称动态内存分配.程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用fre转载 2012-03-19 18:57:34 · 713 阅读 · 0 评论 -
linux下设定一个定时任务的实现
<br />1、终端输入命令<br />crontab -e<br /><br />2、利用光标往下走<br /><br />如图:m h dom mon dow command<br /> 9 9 23 12 4 touch hehe.c<br />具体意义表示:分钟 小时 日期 月份 星期命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command),*表示任意时间。<br />本例:在12月23号9时9分在主目录下新建原创 2010-12-23 09:21:00 · 810 阅读 · 0 评论 -
C/C++语言写程序时的“段错误”总结
<br /><br />我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难 免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是手工“除虫”(debug),往往是效率低下且让人厌烦的,本文将就"段错误"这个 内存访问越界的错误谈谈如何快速定位这些"段错误"的语句。<br />下面将就以下的一个存在段错误的程序介绍几种调试方法:<br /> 1 dummy_function (void)<br转载 2011-03-31 18:44:00 · 2323 阅读 · 0 评论 -
警告: 隐式声明与内建函数 ‘exit’ 不兼容 解决方案
1 #include 2 #include 3 #include "lib.h" 4 5 int main() 6 { 7 bill("Hello World"); 8 exit(0); 9 } 今天在编译我的一个linux原创 2012-02-23 19:59:19 · 799 阅读 · 0 评论 -
C++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支转载 2012-02-26 16:09:03 · 629 阅读 · 0 评论 -
借助类型转化考察浮点数在内存中表示的一个心得
#include #include #include #include using namespace std;int main(){ float a = 1.0f;//在内存中的十六进制表示为3f800000(按照IEEE754标准) std::cout << (int)a <<endl;1 std::cout << &a <<endl;//输出的是变量a的地址0012FF7原创 2012-02-26 19:42:22 · 588 阅读 · 0 评论 -
printf的参数赋值的顺序
#include int main(){ int b=3; int arr[]={6,7,8,9,10}; int *ptr = arr; printf("%d\n",*ptr); *(ptr++) += 123; printf("%d,%d\n",*ptr,*(++ptr)); //printf的参数赋值顺序是从右向左 int i=5; printf("%d,%d\n"原创 2012-02-26 19:07:39 · 1800 阅读 · 0 评论 -
变量的声明和引用
#include using namespace std;int i = 1;void main(){ int i = i; cout << i <<endl;}评价:(1)、不合理,但是符合语法(2)、i变量从声明的那一刻起就是可见的了(3)、main()内的i为局部变量,main外的i为全局变量,二者不是一回事,全局变量i存放于全局变量区,而局部变量i存原创 2012-02-26 16:02:23 · 655 阅读 · 0 评论 -
指针类型的变化
#include int main(){ //无符号整型,4个字节 unsigned int a = 0xFFFFFFF7; //无符号整型强制转化为无符号char型,只保留最低一个字节,所以i的值为0x000000f7 unsigned char i = (unsigned char)a; //注意!!!!该步骤只是将一个unsigned int型的指针强制转化为一个char型原创 2012-02-26 21:48:31 · 946 阅读 · 0 评论 -
全排列算法(递归)
一直学习,有时候会感到厌烦,天天呆在自习室,把人都傻了。考研刚刚结束,打算把数据结构再复习复习,也给自己找点编程的东西。接受了朋友的建议,先从递归算法开始复习吧。 递归是一种机制,一种思想。有的问题本身就是递归定义的,例如求阶乘,二叉树……;有的问题表面上看来不是递归定义,但是也可以用递归来解决,我认为这有点像分治法,即减小问题的规模。实现递归,有两个必要条件,即1.确定递归公式;原创 2012-03-06 09:04:19 · 920 阅读 · 0 评论 -
利用霍纳规则求多项式的值(递归)
7 #include 8 #include 9 #define LEN 3 10 int hornor(int [],int,int); 11 int main() 12 { 13 int a[3]={1,2,3};//数组表示多项式的系数 14 int x=2;//多项式的自变量值 15 int result=0;//存放结果 16 re原创 2012-03-11 15:05:38 · 4701 阅读 · 0 评论 -
向函数传递结构体信息
三种方式:1、传递结构体的成员,也就是说,把结构体成员作为函数参数传递2、传递结构体指针(这是我们乐于使用的),优点是高效率,缺点是不安全,不过,也可以通过加const关键字弥补了3、传递结构体本身,在处理小型结构体时经常使用原创 2012-03-14 21:09:24 · 2328 阅读 · 0 评论 -
C语言中的register关键字
A register variable declaration advises the compiler that the variable in question will be heavily used. register的声明的变量,告诉编译器,这个变量将会被频繁使用。The idea is that register variables are to be placed in ma原创 2012-03-16 11:28:07 · 2163 阅读 · 0 评论 -
一个教科书一般的“空指针”错误
#include #include /*void my_strcpy(char *s,char *t){ int i = 0; while ((s[i] = t[i]) != '\0') i++;}*/void my_strcpy(char *s,char *t){ ASSERT ((s!=NULL)&&(t!=NULL)); while ((*s = *t) != '\原创 2012-03-16 13:13:33 · 872 阅读 · 0 评论 -
free和malloc的使用
1、动态内存分配时,用malloc申请内存,在使用完之后,一定要记得用free释放内存今天我在编写程序时遇到了这样一个问题:*** glibc detected *** ./SqlList: free(): invalid next size (fast): 0x09776108 ***======= Backtrace: =========/lib/i386-linux-gn原创 2012-04-02 20:47:54 · 856 阅读 · 0 评论 -
指针(一)
1、指针的本质:地址。指针是一个变量,一般4个字节大小,这个变量的value是一个内存地址。2、指针的类型:从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型: (1)int *ptr; //指针的类型是int * (2)char *ptr; //指针的类型是char *原创 2012-03-19 19:53:12 · 584 阅读 · 0 评论 -
**公司实习生笔试总结
1、被一道题难住了,虽然我准原创 2014-07-09 15:20:03 · 863 阅读 · 0 评论