
C/C++
文章平均质量分 56
Zju_Jemery
这个作者很懒,什么都没留下…
展开
-
数组作与指针做参数比较
数组作与指针做参数比较C语言中的数组可分为一维数组和多维数组两类,而多维数组中又以二维数组最为常见。这里也仅针对这一维数组和二维数组作简要说明。高质量C++编程指南中指出当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针,这句话针对一维数组是正确的(目前个人认为是正确的),但是对于多维数组,这显然不完全正确。C语言之所以把数组形参当作指针是出于效率考虑,如果把一个数组全部拷贝这样转载 2014-05-22 21:21:12 · 820 阅读 · 0 评论 -
C++内存分配操作
程序的内存划分为三类。1:静态内存区,主要存放全局变量和用用static定义的变量,这部分内存在程序编译时刻已经分配好,并且在整个程序运行期间都存在。2:在栈(statc)创建内存,这部分主要是程序运行期间,定义的临时对象,调用函数时在函数内部定义的变量,比如fun(){int i;// 栈上创建}当结束临时对象的生命期时,或者调用函数结束时,在栈上创建的对转载 2014-06-13 11:46:46 · 344 阅读 · 0 评论 -
学习C++:实践者的方法(收藏)
前言 我的blog以前很长 一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多, 在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压 抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在转载 2014-06-13 11:32:41 · 492 阅读 · 0 评论 -
C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2014-07-23 17:10:53 · 349 阅读 · 0 评论 -
this指针
一个类的所有对象公用成员函数代码段,不管有多少个对象,转载 2014-05-30 15:55:59 · 690 阅读 · 0 评论 -
c++头文件和实现文件应该怎么布置
在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。对于以C起步,C#作为“母语”的我刚开始跟着导师学习C++对这方面还是感到很模糊。虽然我可以以C的知识面对C++的语法规范,用C#的思想领悟C++中类的使用。但是C#中定义和实现是都在一个文件中(其实都是在类里面),而转载 2014-06-03 11:46:43 · 938 阅读 · 0 评论 -
引用作为函数返回值
“引用作为函数参数”与 “引用作为函数返回值”一、引用作为函数参数作为函数参数时引用有两种原因:1、在函数内部会对此参数进行修改2、提高函数调用和运行效率 关于第一点,都知道C++里提到函数就会提到形参和实参。如果函数的参数实质就是形参,不过这个形参的作用域只是在函数体内部,也就是说实参和形参是两个不同的东西,要想形参代替实参,肯定有一个值的传递。函转载 2014-06-03 15:40:40 · 670 阅读 · 1 评论 -
c++拷贝构造函数和赋值函数
准备实现gof上面一个迭代器模式,用到了上面的List基本类,但是一直对赋值函数和拷贝构造函数不是很熟悉,就研读了一下effective c++的关于这方面的一章,颇有收获,抽取了我认为精华的部分分享给大家。由于一直对c++这一类的用法不是很熟悉,有错误或者优化或者需要特别强调的地方希望朋友们帮忙指出来,我再仔细分析改正。1,拷贝构造函数仍然是构造函数,赋值函数不是构造函数故而转载 2014-06-03 11:27:03 · 584 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而转载 2014-07-11 10:32:39 · 490 阅读 · 0 评论 -
Android开发实践:JNI层线程回调Java函数示例
wenzJNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码(工程文件见附件),描述如何在Android的JNI层开启一个线程,并在线程中回调Java层的函数。代码主要分为Java层(java代码)和JNI层(c语言代码),首先看看Java层的转载 2014-07-31 15:05:22 · 779 阅读 · 0 评论 -
Java中JNI的使用详解第二篇:JNIEnv类型和jobject类型的解释
上一篇说的是一个简单的应用,说明JNI是怎么工作的,这一篇主要来说一下,那个本地方法sayHello的参数的说明,以及其中方法的使用首先来看一下C++中的sayHello方法的实现:[cpp] view plaincopyJNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello转载 2014-08-17 14:20:53 · 752 阅读 · 0 评论 -
Jni接口-深入研究参数的传递(一)
在上一个随笔中介绍了怎样实现一个简单的Jni小程序。在这一篇里主要是说一下JAVA与C++之间的参数传递问题。 本人是个Java程序员,工作没几年 菜鸟级别,C++不是很熟悉,但对.NET到是了解一些,所以这里面的C++部分都用C++.net来讲的。为了便于理解,文档中可能会有很多通俗易懂的白话,最近也是项目中用到了Jni 才学习了几天,所以这里要是有哪说得不对,还请大家见谅,发现问题转载 2014-08-17 11:49:17 · 384 阅读 · 0 评论 -
#pragma once 和#ifndef ... #define ... #endif 比较
最近看Direct3D SDK中的代码,正好对这个还不是很清楚,今天看到就转过来了,方便以后查阅。 原创文章的版权属于作者,出处和作者信息(http://blog.youkuaiyun.com/WinGeek/) C++中防止头文件被多次include 的常见方式有:1) 用#ifndef ... #define ... #endif 宏 #ifndef __MYHEADER_转载 2014-06-13 11:44:57 · 423 阅读 · 0 评论 -
C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
一般我们进行成员变量初始化用两种方法第一种是通过在构造函数内赋值class Point{public:Point(){ _x = 0; _y = 0;};Point( int x, int y ){ _x = 0; _y = 0; }private:int _x, _y;};第二种是使用初始化列表class Point{pub转载 2014-07-24 10:35:13 · 488 阅读 · 0 评论 -
Effective C++读书笔记
记得前段时间又一次拿起《Effective C++》的时候,有种豁然开朗的感觉,所以翻出了我第一遍读时做的笔记。只做参考以及查阅之用。如有需要请参阅《Effective C++》书本。 by shenzi/2010.5.17一.让自己习惯C++ 条款01:视C++为一个语言联邦 为了更好的理解C++,我们将C++分解为四个主要次语言:C。说到底C++仍转载 2014-06-13 11:42:43 · 463 阅读 · 0 评论 -
类的默认构造函数
如果没有为一个类显式地定义任何构造函数,编译器将自动为这个类生成默认构造函数。由编译器创建的默认构造函数称为合成的默认构造函数,它将依据如下规则初始化类中的成员变量:1.内置数据类型的初始化内置数据类型是否自动初始化取决于变量定义的位置。如果变量在全局作用域内定义(即不在任何函数中)或定义为静态局部变量,则这些成员将被初始化为0。如果变量在局部作用域内定义,则这些成员没有初始化。2转载 2014-05-28 10:18:06 · 779 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2014-05-28 10:26:38 · 336 阅读 · 0 评论 -
g++和gcc的比较
cc和g++都是GNU(一个组织)的编译器。1、对于.c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;2、对于.cpp后缀的文件,gcc和g++都会当做c++程序。3、编译阶段,g++会调用gcc(也就是说);4、连接阶段,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。 gcc可以用来编译c++但是它不会自动调用链接的c++库,你需要自转载 2014-07-02 15:37:47 · 425 阅读 · 0 评论 -
C++ 私有构造函数的作用
很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私转载 2014-05-26 16:09:17 · 430 阅读 · 0 评论 -
C++经典书籍解读(转)
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C+ +的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C转载 2014-06-13 11:46:02 · 439 阅读 · 0 评论 -
When is a destructor called?
1.The destructor is called automatically by the compiler when the object goes out of scope.2.The only evidence for a destructor call is the closing brace of the scope that surrounds the object.转载 2014-05-16 11:45:30 · 534 阅读 · 0 评论 -
函数返回值的传递方式(值传递、指针传递、引用传递)
形参和实参之间存在值的传递,与此同时,函数的返回值同样也c原创 2014-05-20 21:19:23 · 1994 阅读 · 0 评论 -
c++创建对象的两种方式
在C++里,有两种方法创建对象:方法一:ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。例如,我定义了一个转载 2014-05-28 10:09:19 · 385 阅读 · 0 评论 -
C++ 值传递、指针传递、引用传递详解
最近写了几篇深层次讨论数组和指针的文章,其中提到了“C语言中,所有非数组的形式参数传递均以值传递形式”数组和指针背后——内存角度语义"陷阱"---数组和指针而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度转载 2014-07-22 09:57:24 · 400 阅读 · 0 评论 -
Essential C++读书笔记
第一章:C++编程基础1.class的定义,一般来说分为两部分,分别写于不同的文件。其中之一是所谓的“头文件(header file)”,用来声明该class所提供的各种操作行为(operations)。另一个文件,程序代码文件(program text),则包含这些操作行为的实现内容(implementation)。2.所谓命名空间(namespace)是一种将程序库名称封装起来的方法。转载 2014-06-13 11:47:26 · 362 阅读 · 0 评论 -
指向对象的指针
在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象空间的起始地址就是对象的指针。可以定义一个指针变量,用来存放对象的指针。如果有一个类:class Time{ public : int hour; int minute; int sec; void get_time( );};void Time::get_time( ){ cou转载 2014-06-12 15:27:53 · 689 阅读 · 0 评论 -
Java中JNI的使用详解第三篇:JNIEnv类型中方法的使用
上一篇说道JNIEnv中的方法的用法,这一篇我们就来通过例子来看一下这些方法的使用:首先是第一个例子:在Java代码中定义一个属性,然后再C++代码中将其设置成另外的值,并且输出来先来看一下Java代码:[java] view plaincopypackage com.jni.demo; public class JNI转载 2014-08-17 14:18:55 · 418 阅读 · 0 评论