指针与指针进阶

开始先来介绍一下什么是指针:

  在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
  简单来说,指针就是变量,用来存放地址的变量。

下面介绍指针数组与数组指针:

 数组和指针有什么联系吗?
   答案是:没有。指针数组是一个用来存放指针的数组,而数组指针是一个指针。
   给出两个例子来认识指针数组与数组指针:
   int *arr1[10];①指针数组
   int (*p)[10];②数组指针
   ①中 * 指向数组,所以它是指针数组。
   ②中 * 先与 p结合,说明p是一个指针变量,p指向一个数组,所以②是数组指针。注意[]的优先级要高于 * ,所以要加( )保证 * 先与 p 结合。

函数指针:

指针可以指向一个值的地址,当然也可以指向一个函数的地址,用来存放函数。那么指针怎么指向函数地址,看一段代码:

void test()
{
    printf("hehe");
}

int main()
{
    void(*p)();
    p = test;
    printf("%p", p);
    system("pause");
    return 0;
}

p先和*结合,说明p是指针,指针指向的是一个函数,指
向的函数无参数,返回值类型为void。

函数指针数组

把函数的地址存放到数组中,那么这个数组就叫函数指针数组。
定义一个简单的函数指针数组:int(* parr[10])()
parr先和[]结合,说明parr是一个数组,数组的内容就是 int(*)() 类型的函数指针。

函数指针的数组的指针

函数指针的数组的指针 顾名思义就是一个指向 函数指针数组 的指针,是一个指针。
函数指针的数组的指针的定义:

void test(const char* str)
{
    printf("%s\n", str);
}

int main()
{
    void(*pfun)(const char*) = test;//函数指针pfun
    void(*pfunArr[5])(const char* str);//函数指针的数组pfunArr
    pfunArr[0] = test;
    void(*(*ppfunArr)[10])(const char*) = &pfunArr;//指向函数指针数组pfunArr的指针ppfunArr
    printf("%p", pfun);
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值