随笔分类 -  C/C++

摘要:常用数据结构有哪些 阅读全文
posted @ 2012-05-03 12:05 petercao 阅读(678) 评论(0) 推荐(0) 编辑
摘要:初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单 阅读全文
posted @ 2011-12-31 16:12 petercao 阅读(3921) 评论(0) 推荐(0) 编辑
摘要:C的位运算符 阅读全文
posted @ 2011-12-27 22:52 petercao 阅读(1889) 评论(0) 推荐(0) 编辑
摘要:Code::Blocks是一个非常优秀的工具,如果您正在寻找VisualStudio之外的,开源、免费、轻便、支持多种编译器、跨平台的C/C++ IDE,那么Code::Blocks就是一个很好的选择。 阅读全文
posted @ 2011-12-25 19:12 petercao 阅读(824) 评论(0) 推荐(0) 编辑
摘要:【转自】http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:#include "x.h"#include "x.h"显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。但是下面的代码:#include "a.h"#include "b.h"看上去没什么问题。如果a.h和b.h都包含了一个头文件x.h。那么x.h在此也 阅读全文
posted @ 2011-11-04 14:21 petercao 阅读(6095) 评论(0) 推荐(0) 编辑
摘要:用GDB调试程序http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-hans使用 GDB 调试 Linux 软件http://www.ibm.com/developerworks/cn/linux/sdk/gdb/ 阅读全文
posted @ 2011-08-14 13:47 petercao 阅读(296) 评论(0) 推荐(0) 编辑
摘要:volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;void test(){do1();while(flag==0);do2();} 这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由别的程序更改,这个程序. 阅读全文
posted @ 2011-08-11 11:00 petercao 阅读(401) 评论(0) 推荐(0) 编辑
摘要:Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有 阅读全文
posted @ 2011-08-11 10:48 petercao 阅读(684) 评论(0) 推荐(0) 编辑
摘要:静态变量static ,全局变量global静态变量在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,他是属于类的也就是没个实例对象都是对于以个静态变量,静态变量的内存空间知道程序退出才释放所占用的内存空间。静态变量直接通过类名访问(java也能通过对象名访问)。有人会分全局的静态变量、局部的静态变量;全局静态变量失去了“全局”的普遍含义,它的作用域限定在本文件里。而静态变量的声明是应该出现在类里不是类的函数里。全局变量关键字global也是静态存储方式,存储在静态存储区。 阅读全文
posted @ 2011-07-18 09:29 petercao 阅读(5590) 评论(0) 推荐(3) 编辑
摘要:用一句话概括,都是用来存储命令行参数的。下面看例子:#include <stdio.h>/**argc表示命令行参数的个数。C/C++规定,*程序本身的文件名也算一个命令行参数,因此argc的值至少为1;*argv是一个字符指针型的数组,用来存储命令行参数。*如:argv[0]指向的字符串就是第一个命令行参数..........*/int main(int argc, char *argv[]){ for(int i=0; i<argc; i++){ printf("%s/n", argv[i]); } int a; scanf("%d" 阅读全文
posted @ 2011-06-26 00:16 petercao 阅读(2891) 评论(0) 推荐(0) 编辑
摘要:1.switch(),其中括号中的参数为数字型变量即:整型、字符型、枚举类型2.#include<stdio.h>表示从库函数数中查找,而#include"stdio.h"表示先查找用户自定义的头文件,找不到再到库函数中找。3.exit是一个库函数,用于结束一个程序或进程。而exit(1)表示发生错 阅读全文
posted @ 2011-06-25 22:49 petercao 阅读(275) 评论(0) 推荐(0) 编辑
摘要:2年前去T公司面试,面试官给了我一张纸一支笔,说写个程序吧,输入一个字符串然后反序输出。我问输入输出是用函数参数呢还是系统I/O,面试官说随你便,写完了说说各有什么优缺点吧。当时我大三,没有参加过ACM没有实验室经历除了课程设计也没写过什么程序,完全小白。当然至今也仍然是菜鸟一只,不堪回首啊。方法一:据说有库函数strrev()啊1234567891011121314#include <stdio.h>#include <string.h>int main(int argc, char* argv[]){ if (argc != 2) { printf("Us 阅读全文
posted @ 2011-06-20 10:16 petercao 阅读(10543) 评论(0) 推荐(0) 编辑