关于指针的初步了解(一)

存放一个字符的地址的指针称为字符指针,存放一个整形变量的地址的指针称为整形指针,除此之外,存放一个数组地址的指针称为数组指针,存放一个函数地址的指针称为函数指针······(任何一个变量在内存中都有地址,任何地址 的存放都在指针里) 。

1.理解数组指针

首先,数组指针是数组还是指针?
答案是 数组指针属于指针。

  int main()
  {
   int arr1[6]={1,2,3,4};//整形数组
   char arr2[6]={'a','c','d','e'};//字符数组
   int i=0;
   int sz1=sizeof(arr1)/sizeof(arr1[0]);//求出arr1数组的长度
   int sz2=sizeof(arr2)/sizeof(arr2[0]);//求出arr2数组的长度
   int *ptr1=arr1;//在这里数组名代表的是首元素的地址,数组元素的类型是int
   char *ptr2=arr2;//在这里数组名代表的是首元素的地址,数组元素的类型是char
   //通过该指针有能力去访问数组中每一个元素
       for(i=0;i<sz1;i++)
     {
       //printf("%d ",arr1[i]);
       printf("%d ",*(ptr1+i));//两种表达方式意思完全相同
     }
  return 0;
}


2.理解函数指针和定义

函数指针为一个存放函数地址的指针

#include <stdio.h>
void test()
{
       printf("hello\n");
}
int main()
{
     printf("%p\n", test);
     printf("%p\n", &test);
     return 0;
}

代码的结果:
在这里插入图片描述
输出的是两个地址,这两个地址是 test 函数的地址。 那我们的函数的地址要想保存起来,怎么保存?
void (* pfun1)();
void *pfun2();
以上哪一个有能力存放test函数的地址呢?
pfun1可以存放。pfun1先和 * 结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值