指针的使用

                 指针的使用

 

1.注意:一定要在对指针应用解除应用操作符(*)之前,将指针初始化为一个确定的地址。

例子:

#include<stdio.h>

Int main()

{

Int a;

Int *p;

/*****************指针的错误用法:对没有指向确定的地址*******************/

*p=10;  

/************************************************************************/

 

//正确使用方法

P=&a;

*p=10;

}

 

C++中还可以使用new来给指针确定地址。

例子:

#include<iostream>

Int main()

{

Int a[4]=new int[4];

Int i=0;

For(i=0;i<4;i++)

  a[i]=i;

Delete[] a;

}

 

2.二维数组指针定义:

对于int **p来说,p所指的对象是指针,那么++p就是让p的值增一个指针的大小,虽然指针所指对像可大可小,但是指针自己的大小却是一定的,目前的系统上一般是4字节(64位系统我没用过,可能是8字节)。也就是说,对char *plong *q来说,pq本身占内存容量是一样大的(虽然charlong占内存不一样大)。
  很多人以为指向数组的指针就是指向指针的指针,于是有人写这样的代码:
int a[2][3];
int **p = a;//错误
  这个代码的错误之处在于a是一个数组,它的成员也是数组,所以a叫做数组的数组”——C++中严格说来没有二维数组。那么,你要用一个指针来记录a,就要用一个能表示数组的数组的指针,以下代码是正确的:
int (*p)[3] = a;//正确
  只有这样才能保证++p使p指向a的下一对像(该对像是一个数组)。
  顺便提一句:不要写成“int *p[3];”

int *p[3];//定义p[3]为指针数组

int (*q)[3];//定义q为数组指针

int a[4][3];//定义一个二维数组

 

 

 

3.指向指针的指针

#include<stdio.h>

Int main()

{

Int a[5]={1,3,5,7,9};

Int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};   //定义一个指针数组

Int **p,i;

P=num;

For(i=0;i<5;i++)

{

Printf(“%d”,**p);

P++;

}

Printf(“\n”);

}

 

 

4.指向函数的指针

 

#include<stdio.h>

Int (*p)(int,int);

Int printf_one(int,int);

Int printf_two(int,int);

Int main()

{

  P=printf_one;

  P(1,2);

  P=printf_two;

  P(3,4);

}

 

Int printf_one(int a,int b)

{

  Printf(“输出a%d,输出b%d\n”,a,b);

}

Int printf_two(int a,int b)

{

Printf(“输出a%d,输出b%d\n”,a,b);

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值