![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
jubincn
这个作者很懒,什么都没留下…
展开
-
指向函数的指针
指向函数的指针的写法: 比如有这样一个函数 void f1(char* p,int& n) { } 指向这个函数的指针就可以写为:void (*p)(char *p,int& n); 对它进行赋值:p=&f1; 另外一个函数可以以指向函数的指针为自己的参数:原创 2008-10-18 20:59:00 · 554 阅读 · 0 评论 -
endl与‘/n’的区别
区别是,endl除了写/n进输出流之外,还调用输出流的flush函数,刷新缓冲区,让数据直接写入文件或者屏幕上。 都可以用的,不过如果需要立即显示,比如输出到显示器的场合,最用用endl,如果只是写一个/n不一定会立即显示,因为数据可能被存在缓冲区里,没有理解写入设备。 输出流是文件考虑效率的时候,可以直接写/n,这样不刷新缓冲区,会更快转载 2008-10-18 21:48:00 · 1010 阅读 · 0 评论 -
在同一个地方摔倒两次了(stdfx.h)
今天花了一个多小时调了一个6行的小程序,编译器一直在报错:“std”: 不是类或命名空间名称;这实在是让人相当郁闷的一件事情,尤其是在我已经写了#include 的情况下。 就在我百思不得其解之际,突然想起半个月前我也遇见过类似的情况,解决方法是把#include 放在#include 后面,果然,零错误零警告,编译通过了。 在网上查了一些资料,才知道原因是stdfx.h必须是原创 2008-10-18 21:18:00 · 1528 阅读 · 0 评论 -
在cin中输入输出空格的实现
作者:Horsetail原文出处:http://www.cppblog.com/horsetail/archive/2007/10/18/17814.html因为std::cin不能直接接受空格(空格作为输入的标志),所以我们要用cin对象中的一个成员函数std::cin.get()接受单个字符.并可以用std::cout.put()成员函数直接输出.如下: #include using name转载 2008-10-18 16:59:00 · 3045 阅读 · 0 评论 -
c++ 学习(1)
(1)在C++中,char*转为string需要使用函数string(char*),如char *ch="abc";string str=string(ch);(2)传char*时,如果不对内容进行改变的话,尽量用const char*(3)string转char*的函数:c_str的作用是得到字符串在内存中的地址。 如:char *ps;string ch="aaa";ps=c原创 2008-10-04 09:31:00 · 777 阅读 · 0 评论 -
stdfx.h是什么
刚用VS2008没几天,一直不明白"stdfx.h"是什么,从百度知道里搜了个结果,感觉还不错。Standard Application Fram Extend 没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。 Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的转载 2008-10-18 21:13:00 · 3175 阅读 · 0 评论 -
初始化(未完成)
初始化char时,可以char a=0;初始化string时,最好用""。string str="";而不能string str=0;原创 2008-10-18 22:02:00 · 1653 阅读 · 0 评论 -
C++学习(2)
关于析构函数:(1)使用new关键字或malloc,alloc等关键字分配的内存,是在堆内存里分配的;其它的如利用声明分配的内存,是在栈内存里分配的。(2)如果在堆空间里分配了内存,一定要显式调用析构函数;否则,可以让操作系统自动调用析构函数。原创 2008-10-15 09:33:00 · 555 阅读 · 1 评论 -
由Huffman编码所学到的
(1)若要传回两个参数,可以使用struct结构(2)尽力不要使用数组进行大量的插入删除操作,(3)过早的优化是万恶之源(4)因为Huffman编码中所有的叶子节点都是所要进行编码的元素,所以我们可以容易地区分原始元素与合并生成的元素(5)在使用一棵树时,最好先写一个带有(parent,lchild,rchild)的结构,待程序写完后再进行优化。(6)在进行遍历时,可以先用穷举法来进行遍历,待程序原创 2008-11-02 11:51:00 · 551 阅读 · 0 评论 -
. 和 ->
一个对象取它的成员变量或方法时使用“.”,只有指针才能用“->”,并且指向对象的指针p可以直接用p->a这种方式访问对象的成员变量或方法。原创 2008-11-03 19:43:00 · 549 阅读 · 0 评论 -
传递数组参数
在做递归时,首先要想到递归的终止条件若一循环长度为n,则终止条件可设为i在以指针的形式传数组时,永远都用头指针传递,然后加一个偏移参数offset即可找到所需的数组元素。原创 2008-11-09 23:19:00 · 632 阅读 · 0 评论 -
学好算法 (摘自:http://www.cppblog.com/w2001/archive/2007/03/23/20396.html)
摘自:http://www.cppblog.com/w2001/archive/2007/03/23/20396.html1. 目标要高,ACM / ICPC、TopCode,可以到上面去找题目做2. 方向要明确,是算法分析与设计,而不是数据结构3. 基础要扎实、要系统,不能靠网络,知识点太零散,要靠教科书4. 过程中要勤于归纳总结,不能白做,形成一套系统的分析、思考模式转载 2008-11-10 18:16:00 · 1090 阅读 · 0 评论 -
学习最大子段和的动态规划算法的一些总结
(1)也许无法直接用动态规划算法解最大子段和,但可以用动态规划求b[j],因此可以间接地获得最大子段和。在运用算法时,不仅要考虑直接运用算法求解,更要考虑“曲线救国”的间接方式。(2)在考虑b[j]的过程中,应该注意到b[j]中j的特殊性,这次之所以与正确答案擦肩而过,正是因为没有注意到j的特殊性,没有耐心地理解提示,从而导致关键信息丢失。(3)关于b[j]=b[j-1]+a[j]:动态规划的一个原创 2008-11-10 18:24:00 · 1421 阅读 · 0 评论 -
struct的初始化,拷贝及指针成员的使用技巧(摘自http://blog.chinaunix.net/u/9577/showart_417268.html)
摘自http://blog.chinaunix.net/u/9577/showart_417268.htmlstruct的初始化,拷贝及指针成员的使用技巧struct是C中重要的ADT。但是在一般讲C的书中,往往只介绍了struct的定义、顺序初始化及位域。本文将笔者曾经用到的、看到的知识点罗列出来,与大家分享。为了方便后面的介绍,先定义一个struct类型: struct User转载 2008-11-09 23:17:00 · 1330 阅读 · 0 评论 -
include 与“”
一般为系统自带的库,使用" "则常用于用户自定义的类,在vs里的assit提示也说明是这样的。原创 2008-11-18 20:57:00 · 552 阅读 · 0 评论 -
两种实现二维数组的方式
在C++中实现一个二维数组,一般有两种方式,一种是静态分配,即数组式的声明:int a[5][5];另一种是动态分配,即: int** a=new int*[15]; for (int i=0;i { a[i]=new int*[15]; memset(a[i],0,sizeof(int[15]));//将数组中的每个元素初始化为0 } 第一种方法实现的二维数原创 2008-11-20 22:35:00 · 1085 阅读 · 0 评论 -
五子棋收获(一)
一定要动手写程序! 下午和晚上的结果就是一个五子棋的婴儿,虽然没做出什么样子,可仍有许多收获,其中最大的收获就是一定要动手写程序,正如杨老师所说的,“有时候写一行程序比看十遍书还有用”过早的优化是万恶之源 用最笨的方法写好第一个版本,以后再慢慢修改。“瞒着锅台上抗”是一种很不好的方法,写程序要一步一步地来。语法上的新收获virtual int fucA()=0;//纯虚函数三种继承方式原创 2008-12-08 23:20:00 · 1159 阅读 · 0 评论 -
关于“脏数据”和“多次调用”
脏数据上午花了挺长时间调试C中的一个简单的函数调用,程序总是出现一些奇怪的行为。经过分析和调试终于发现了问题,原来是程序读了“脏数据”。还记得杨老师上课时反复强调过这个问题,结果还是犯了那个错误。看来编程必须要动手是句大实话。“脏数据”是在使用一个已被销毁的数据的地址时出现的问题。尤其是在函数中利用函数的局部变量对一个指针进行赋值后,又利用这个指针去取相应的局部变量时,最容易出现“脏数原创 2009-05-03 22:49:00 · 1074 阅读 · 2 评论 -
在Windows操作系统下的gcc【转】
转自:http://blog.csdn.net/Mobidogs/archive/2007/10/10/1819084.aspx 我使用了其中的MinGW,MinGW中没有GDB,后来又从CSDN上下载了个gdb.exe,安装成功了。我使用的开发环境是Eclipse+MinGW在Windows操作系统下的gcc第一节 GCC家族概览GCC是一个原本用于Unix-lik转载 2010-04-11 15:58:00 · 835 阅读 · 0 评论 -
初学C++环境搭建(Eclipse+CDT+MinGW)【转】
转自:http://www.blogjava.net/jacky/archive/2007/10/24/155531.html 我在Windows XP下用他的方法成功了:-)初学C++环境搭建(Eclipse+CDT+MinGW)Eclipse除了可以开发Java之外,还支持了许多语言,当然绝不会漏了 C/C++,现在就来看看如何利用 Eclipse 进行C/C++程序的开发转载 2010-04-11 16:06:00 · 806 阅读 · 0 评论 -
在ubuntu中更改默认的gcc和g++
最近在学习CUDA编程,搭建CUDA环境。Ubuntu11.04的默认gcc版本是4.5,但CUDA 4.0版本推荐的gcc为4.4或更低的版本,为了减少不必要的麻烦,我决定将gcc的默认版本改为4.4.安装gcc4.4和g++4.4sudo apt-get install gc原创 2011-07-28 13:58:48 · 3884 阅读 · 0 评论 -
Linux系统编程:用PHP执行Root命令 转自:http://blog.163.com/sunzs20113@126/blog/static/3706880920106205435336/
转自:http://blog.163.com/sunzs20113@126/blog/static/3706880920106205435336/在玩C以前玩过一段时间的PHP, 哪个时候需要用PHP 来运行root命令,一直未果,直到有一天搜索到了super转载 2011-08-03 23:37:54 · 1405 阅读 · 0 评论 -
setuid函数的学习笔记 转自:http://blog.chinaunix.net/space.php?uid=1877180&do=blog&cuid=1132108
转自:http://blog.chinaunix.net/space.php?uid=1877180&do=blog&cuid=1132108在linux中每个进程有三个[实际上有第4个]用户标识符. real uid : 真实用户ID.转载 2011-08-03 23:58:33 · 4718 阅读 · 0 评论 -
非Root用户配置VIM/EMACS的CUDA C环境
CUDA C是对C语言的扩展,主体还是C语言的语法,因此一个简单的方法就是创建~/.vimrc文件并加入:au BufNewFile,BufRead *.cu set ft=c原创 2011-08-10 10:30:28 · 2409 阅读 · 0 评论 -
Ubuntu中 iostream.h: No such file or directory 的解决
在Ubuntu中使用g++编译一段代码,出现 "iostream.h: No such file or directory"的错误使用sudo apt-get install build-essential后,发现build-essential已经安装。下面是出问题的原创 2011-09-13 23:09:08 · 15867 阅读 · 2 评论 -
GCC使用简介 转自:http://blog.19lou.com/10061845/viewspace-384095
转自:http://blog.19lou.com/10061845/viewspace-384095GCC是GNU项目的编译器组件之一,也是GNU最具有代表性的作品。在GCC设计之初仅仅作为一个C语言的编译器,可是经过十多年的发展,GCC已经不仅仅能支持C语言转载 2011-09-12 23:03:30 · 1186 阅读 · 0 评论 -
GDB简单教程
本文的内容基本来自http://www.cs.cmu.edu/~gilpin/tutorial/这篇教程,我在使用里面的示例程序时遇到了” is not a file or directory” 的错误,因此修改了一下原来到源程序。源代码:为了使读者更快地学习gd原创 2011-09-14 14:52:29 · 3957 阅读 · 1 评论 -
6.087 Practical Programming in C, lec1:Introduction. Writing, compiling, and debugging C programs.
前言:最近通过MIT OCW的6.087 Practial Programming in C来复习C语言,对照了下6.087的课程设置与C Programming Language的章节结构,感觉两者的顺序差不多,但6.087为了使学习曲线更平滑,将一些比较难的内容分为两个或多个原创 2011-10-12 23:08:02 · 1044 阅读 · 0 评论 -
离散傅立叶变换(Discrete Fourier Transform)
离散傅立叶变换概述傅立叶分析以法国数学家和物理学家JeanBaptiste JosephFourier命名,是一种将信号分解为谐波的方法。如下三图所示,一个包含16个点的离散信号可以用9个余弦和9个正弦波来表示。在表达任意一个离散信号时,这些三角波的周期是一定的,不同的只是振原创 2011-10-15 14:54:55 · 13876 阅读 · 0 评论 -
快速傅立叶变换(Fast Fourier Transform)
FFT算法是由J.W. Cooley和J. W. Tukey在论文”Analgorithm for the machine calculation of complex Fourier Series”中提出的。FFT是基于ComplexDFT来实现的。通过ComplexD原创 2011-10-15 15:15:46 · 10865 阅读 · 0 评论 -
6.087 Practical Programming in C, Assign1(not complete)
Problem 1.1(a) What do curly braces denote in C?Why does it make sense to use curly braces to surroundthe body of a function?我的答案:我认原创 2011-10-16 21:54:01 · 755 阅读 · 0 评论 -
6.087 Practical Programming in C, lec3: Control flow. Functions and modular programming. Variable s
声明:这个OCW类的Blog为我自己的一些看法,基本没有进行考证,因为我的目的是进行相关思考,未来学习编译原理的时候再看看自己的想法是否正确。Blocks and compound statements• A simple statement ends in asemicolon: z = foo(x+y); • Consider the multiple statemen原创 2011-10-19 23:21:12 · 695 阅读 · 0 评论 -
Ubuntu 10.04使用Wine安装Source Insight 转自:http://www.linuxidc.com/
转自:http://www.linuxidc.com/Linux/2010-07/27137.htm一、Ubuntu安装wine工具$sudo apt-get install wine注:如安装不了加入如下源:{{ deb http://cz.archive.Ubuntu.com/ubuntu lucid main universe}}这是Ubuntu 1转载 2011-10-21 11:56:53 · 1155 阅读 · 0 评论 -
查看gcc预定义宏(predefined macro)的方法
GNU C Compilergcc -dM -E - /dev/nullcpp -dM HP-UX ansi C compilercc -v fred.c (where fred.c is a simple test file)SCO OpenServer C compilercc -## fred.c (where fred.c is a simple test file)Sun St原创 2011-10-24 20:32:03 · 2464 阅读 · 0 评论 -
6.087 Practical Programming in C, lec2: Variables and datatypes, operators.
Review: C Programming language• C is a fast,small,general-purpose,platform independent programming language.C中使用简单的数据类型(本质上全部都是数字)和有限的运算符(屈指可数)来构建其基本单元,使用栈来自动控制计算顺序,因此小而快。数字的表示和栈结构是所有计算机共有的,因此可以实现原创 2011-10-18 23:11:10 · 1161 阅读 · 0 评论 -
6.087 Practical Programming in C, lec6
User-defined datatypes, structs, unions, bitfields. Memory allocation. Linked lists, binary trees.StructureDefinition: A structure is a collection of related variables (ofpossibly different types)原创 2011-10-26 11:08:51 · 807 阅读 · 0 评论 -
GCC 中的inline关键字 转自:http://xushouze2006.blog.163.com/blog/static/16230032200831710196672/
转自:http://xushouze2006.blog.163.com/blog/static/16230032200831710196672/1、inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影转载 2011-10-26 14:58:37 · 747 阅读 · 0 评论 -
C预处理器简介
Cpreprocesser,简称cpp,是C编译器在编译源码之前用于转换代码的宏处理器。之所以称之为宏处理器,是因为通过cpp,你可以在程序中定义和使用宏。cpp是一种文本处理工具,因此也可以用于C、C++和Objective-C之外的源码。初始处理cpp的作用是对输入的文件做一系列的文本处理,这些文字处理是最先进行的。理论上,预处理中的各个操作的执行是有严格的顺序,但实际上GNU的CPP原创 2011-10-25 21:18:49 · 2629 阅读 · 0 评论 -
6.087 Practical Programming in C, lec7
<!--@page {margin:0.79in}p {margin-bottom:0.08in}h3 {margin-bottom:0.08in}h3.western {font-family:"Arial",sans-serif}h3.cjk {font-family:"AR PL UMing HK"}h3.ctl {font-family:"L原创 2011-10-27 09:53:33 · 731 阅读 · 0 评论 -
离散余弦变换(Discrete Cosine Transform)
DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信息量,尽管低频部分的数据量比高频部分的数据量要小的多。例如删除掉占50%存储空间的高频部分,信息量的损失可能还不到5%。变换编码有很多种。K–L变换的压缩效率很高,但算法实现困难;FFT变换算原创 2011-10-17 18:49:29 · 45954 阅读 · 8 评论