指针的详解

NULL 指针
#include <iostream>

using namespace std;

int main()
{
    //如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
    int *ptr = NULL;

    cout << "ptr is " << ptr << endl;

    if (ptr) {
        cout << "不打印" << endl;
    } else {
        cout << "运行" << endl;
    }

    return 0;
}

/* vim: set ts=4 sw=4 sts=4 tw=100 */
指针的算数运算  《 ++  --  + -》

#include <iostream>
using namespace std;

const int MAX = 3;

int main()
{
    int var[MAX] = {10, 100, 200};
    int *ptr;

    ptr = var;
    for(int i=0; i < MAX; i++)
    {
        cout << "Address of var [" << i << "] =";
        cout << ptr << endl;

        cout << "Value of var[" << i << "] =";
        cout << *ptr << endl;

        ptr++;
    }
    return 0;
}

/* vim: set ts=4 sw=4 sts=4 tw=100 */
指针的比较

#include <iostream>
using namespace std;

const int MAX = 3;

int main()
{
    int var[MAX] = {10, 100, 200};
    int *ptr;

    *(var + 2) = 500;

    ptr = var;
    while ( ptr <= &var[MAX -1])
    {
        cout << ptr << "& " << *ptr << endl;
        ptr ++;
    }
    return 0;
}

/* vim: set ts=4 sw=4 sts=4 tw=100 */
时间: 2024-10-29 14:17:58

指针的详解的相关文章

智能指针auto_ptr详解

概述:C++中有很多种智能指针,auto_ptr就是其中的一种,该智能指针主要是为了解决"因程序异常退出发生的内存泄漏"这类问题的. 我们先来看下面的问题代码 #include<iostream> #include<memory> #include<exception> using namespace std; //一般指针的处理方式 template<typename T> class OldClass { public: OldCla

C语言指针传递详解

传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问,要在某个函数中修改数据,需要用指针传递数据,当数据是需要修改的指针的时候,就要传递指针的指针,传递参数(包括指针)的时候,传递的是它们的值,也就是说,传递给函数的是参数值的一个副本 本文将讨论C语言中指针传递给函数与从函数返回指针 本文地址:http://www.cnblogs.com/archimedes/p/c-transfer-point.html,转载请注明源地址. 用指针传递数据 用指针传递数据的一个主要原因是函

C++ 智能指针auto_ptr详解

1. auto_ptr 的设计动机: 函数操作经常依照下列模式进行: 获取一些资源 执行一些动作 释放所获取的资源 那么面对这些资源的释放问题就会出现下面的两种情况: 一开始获得的资源被绑定于局部对象,那么当函数退出的时候,这些局部对象的析构函数被自动的调用,从而自动释放掉这些资源; 一开始获得的资源是通过某种显示手段获取,而且并没有绑定在任何对象身上,那么必须以显式的方式释放.这种情况常常发生在指针身上; 例子: 1 void f() 2 { 3 ClassA* ptr = new Class

数组,异质结构以及指针的详解

数组,异质结构以及指针的详解 前言 昨天看了一部韩国电影,老千2,看到凌晨5点,不过发现韩国的棒子们确实养眼,女的贼拉漂亮,还有大尺度哦~ 咱们上一次分析了过程(方法)的实现,其中精妙的栈帧占据了首要的地位,不知道各位还能否记忆起来.今天咱们一起来看看数组的相关内容,相比之下,数组和流程控制与过程的实现难度差不多,尤其是动态数组可能还要稍微难一些,因为大家做好心理准备,不过呢,相信你每克服一个困难都是一种快乐,就像你看见一张好图,废了九牛二虎之力找到了种子那种感觉. 正文 数组简介 如果大家是一

如何使用指向类的成员函数的指针(详解!)

我们首先复习一下"指向函数的指针"如何使用? [cpp] view plain copy print? void print() { } void (*pfun)(); //声明一个指向函数的指针,函数的参数是 void,函数的返回值是 void pfun = print;   //赋值一个指向函数的指针 (*pfun)();    //使用一个指向函数的指针 比较简单,不是吗?为什么*pfun需要用()扩起来呢? 因为*的运算符优先级比()低,如果不用()就成了*(pfun()).

C++智能指针用法详解

一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::shared_array.boost:

C 二维指针难点详解。

关于   指向二维数组的指针. int  a[2][3]; int *p; int (*p_1)[3]; 可以用p_1 = a ,但是不能用p = a : 因为此时数组a的数据类型是  int (* x)[3],所以不能用p=a赋值. 可以p=&a[0][0];这样赋值p. 用p_1=a时,*(p_1+1)此时相当于用*号将指向第一行的指针变为 指向第一行第0列(&a[1][0])地址的指针的,虽然不加*  两者的地址一样,但是所属的数据类型不一样,加了一个*号相当于让 数据类型 &quo

指针基础详解

在网上看到的关于指针的博客,写的很详细,收藏一下.帮助学习数据结构和复习用 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区.让我们分别说明. 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*ptr)[3]; int *(*ptr)[4]; 指针的类型 从语法的角度看,你只

C语言---指针变量详解1

数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量.在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.指针变量的值就是某份数据的地址,这样的一份数据可以是数组.字符串.函数,也可以是另外的一个普通变量或指针变量. 现在假设有一个 char 类型的变量 c,它存储了字符 'K'(ASCII码为十进制数 75),并占用了地址为 0X11A 的内存(地址通常用十六进制表示).另外有一个指针变量 p,它的值为 0X11A,正好等于变量 c 的地址,这种情况我们