【探讨c/c++的指针】教程文章相关的互联网学习教程文章

C++学习基础十七-- 函数指针【代码】

C++常用的函数指针语法:返回值类型 (*函数名)(参数列表);举例说明:int (*Func)(int m, int n);用typedef简化函数指针的定义 例如:1 typedef int (*Func)(int m, int n);函数指针的初始化和赋值 1// 1. 先声明对应函数指针类型的函数 2int max(int num1, int num2)3{4return num1 > num2 ? num1 : num2;5}6 7//2. 初始化 8 Func fc = 0;//表示函数指针不指向任何函数 9 Func fp = max;//表示函数指针指向max函数 1011//...

【校招面试 之 C++】第13题 C++ 指针和引用的区别

1、指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存...

C/C++ 函数指针数组【代码】

1、函数指针,用于保存函数的入口地址,即函数名。// 函数指针的基本用法// 声明一个函数 int func(int);// 写法1 // 定义一个函数指针 int (*fptr)(int); // 形式上只比函数多了一个*号和一对圆括号// 写法2 // 声明一个函数指针类型 typedef int (*fptr_t)(int); // 定义一个函数指针 fptr_t fptr;// 函数指针赋值 fptr = func;// 利用函数指针来调用函数 fptr(1); // 写法1 (*fptr)(2); // 写法22、函数指针也是一种变量,会有变...

数组和指针作为函数参数——高质量C、C++编程指南【图】

本文内容出自《高质量C、C++编程指南》。阅读之后理解,然后通过自己的话和例子讲清楚,这样才是学习之道。以下内容都是自己所认为的东西,如果哪里错了,希望各位大神指出。1、数组作为函数的参数进行传递时,该数组自动退化为同类型的指针结果:第一张图中,str为数组,此时的长度为6,而作为函数参数时退化为指针了,指针的长度固定为4。第一张图中,str为数组,所以不能对str进行自增或自减,而在函数中是可以的,因为退化为指...

模拟实现c++标准库和boost库中的智能指针【代码】

我们知道c++标准库中定义了智能指针auto_ptr,但是我们很少用它,因为虽然它能够自动回收动态开辟的内存,不需要程序员自己去维护动态开辟的内存,但是当用它去赋值或者是拷贝构造时有一个管理权转移的过程,这样我们就不能很方便的使用auto_ptr。下面是简单的auto_ptr的实现,我们可以看到在复制和赋值时它将转移管理权。template<class T>class AutoPtr{public: AutoPtr(T* ptr) :_ptr(ptr) {} ~AutoPtr() ...

C++指针初始化【代码】【图】

(转http://www.nowamagic.net/librarys/veda/detail/2128)int i; int *pi; i = 30; pi = &i; printf("%d\n", i); printf("%d\n", *pi); printf("%d\n", &i);#include "stdio.h"main() {char a,*pa;a = 10;pa = &a;*pa = 20;printf("%d", a); }输出:20通过指针访问数组元素int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6}; pa = a; /*请注意数组名a直接赋值给指针pa*(a的首地址赋给pa)/for (i = 0; i <= 9; i++) {printf("%d\n", pa[...

C++ Primer快速入门之六:数组和指针

更新:勘误,delete [] 猪 我们知道,C语言以及早期的面向结构的语言几乎都支持数组定义,比如整形数组int 女神[2],表示有俩数: 女神[0], 女神[1],她们都是整数。C++ 语言为了效率和兼容考虑,也支持这个。当然了,毕竟是别人家的孩子(标准),并不提供类似于 vector 和迭代器类型那些神奇的能力。与 vector的区别在于,数组的长度是固定的。另外呢,指 针还是那个指针,没有变化。? 我们编程时候,尽量使用 vector,避免使用数...

c++字符串指针地址的输出

?123456789#include <iostream>usingnamespacestd;intmain(){ char*p=NULL; p="computer"; cout<<p; return0;}输出 computer而不是字符串的地址,如果要输出地址可以 用 printf("%p",p);或 cout << static_cast<const void *>(p)原文:http://www.cnblogs.com/newhcw/p/3527575.html

Windows客户端C/C++编程规范“建议”——指针

2 指针2.1 尽量使用智能指针 等级:【推荐】 说明:正确使用智能指针可以省去指针管理的工作。2.2 类成员变量指针释放后一定要置空 等级:【必须】 说明:如果类成员变量指针在释放后没有置空,将出现如下问题: a)无法判断指针是否已经是野指针 b)Dump分析很难发现是野指针函数调用导致崩溃2.3 正确使用delete和delete[] 等级:【必须】 说明:delete[]用于释放动态分配的数组,而delete用于释放对象。两者不可以混用。2.4 使用指...

C++ 何时使用动态分配(即使用newkeyword)?何时使用指针?

动态分配在你的问题里。你用了两种方式创建对象。这两种方式基本的不同在于对象的存储时间。当运行Object myObject;这句代码时。它作为自己主动变量被创建,这意味着当对象出了作用域时也会自己主动销毁。而当你使用new Object()这样的方式时,对象所拥有的内存是动态分配的。这表示直到你调用delete()方法对象才会被销毁。否则一直存在。当须要用动态分配内存来处理时,你应该仅仅使用动态分配的方式,也就是说,当你能够使用动态...

c++中引用和指针的区别

1、指针和引用的主要区别。 引用是为变量起另一个名字(小名),一般在变量初始化时,初始值直接拷贝给变量,定义引用时,把引用(小名)和初始值“绑定”在一起,而不是将初始值拷贝给引用。因为 无法将引用重新绑定到另一个对象,所以引用必须初始化。 举个例子: 有个变量叫张三,张三=2。给张三起个小名叫小三,即小三=张三。定义引用”小三“时必须针对一个对象,一旦定义完成,”小三“就不能再指定别的变量,所以起小...

C++ 指针与数组【代码】

指针与数组 在C++中,指针与数组有着非常紧密的联系。 数组有一个特性:在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针:String *p = nums; // 等价于 p = &nums[0]; 在大多数表达式中,使用数组类型的对象其实是使用一个指向该数组首元素的指针。 以上的描述还是有点难以让人理解,那么我们接下来更仔细地说明一下指针与数组之间的联系 首先,是它们的定义 数组与指针的定义 数组:数组是存...

java中使用C++指针实现java调用C#

运行结果图:  Access.java代码:package jxdo.iclr;public class Access {  private native void nLoad(String asmFileName);private native int nGetType(String typeName);private native int nCreateInstance(int iTypePointer);private native int nCreateInstance(String typeName);private native void nInvokeStatic(int iTypePointer, String methodName);private native void nInvoke(int iObjectPointer, String ...

c++ 中的空指针和void指针

指针空值nullptr以往用0或者NULL去表达空指针的问题: C/C++的NULL宏是个被有很多潜在BUG的宏。因为有的库把其定义成整数0,有的定义成 (void*)0。在C的时代还好。但是在C++的时代,这就会引发很多问题。 C++11使用nullptr关键字,是表达更准确,类型安全的空指针#include <iostream> using namespace std; int main() { //!void voidObject; 错,不能声明void类型的变量 void *pv; //对,可以声明void类型的指针 int i = 5; pv = ...

C++-声明类的变量指针和函数指针【代码】

使用void(Student::*pwho) void = & Student::who // 构造函数指针使用string Student::*p_name = & Student::m_name //构造变量指针 #include <iostream> #include <cstdio>usingnamespace std; class Student{ public:Student(conststring& name):m_name(name){} void who(void){cout << "学生的名字是" << m_name << endl; }string m_name; }; int main() {//成员函数指针void(Student::*pwho)(void) = &Student::who; //成员变...