指针详解

学习C的过程中,指针可真的令人头秃。。还好我秀发茂密哈哈哈哈哈哈。。不过多理解,多练习,我相信这也不是什么大问题。可惜我还在理解阶段,记录一下我学习理解的内容。

目录

  • 指针的定义和类型
  • 指针数组
  • 数组指针
  • 数组传参和指针传参
  • 函数指针
  • 函数指针数组
  • 指向函数指针数组的指针
  • 回调函数

one.指针的定义和类型

1.指针的定义:在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。意思是通过它能找到以它为地址的内存单元。

以上360百科上的解释。总结来说:指针就是个变量,用来存放地址的变量。通过指针可以找到以它为地址的内存单元。再进一步说,指针是地址。指针变量的地址存在二级指针。

int a = 10;
int* pa = &a;
int** ppa = &pa;

2.指针大小:在32位平台是4个字节,在64位平台是8个字节。

3.指针类型:int*类型的指针是为了存放int类型变量的地址。char*、float*......道理都一样。
既然指针存在类型的区分,那么一定有它的意义。①确定了解引用操作访问几个字节。②指针类型决定了指针向前或向后走一步走多大距离。 意义②似乎有点难理解,下面这段代码解释一下:
 

#include <stdio.h>
int main()
{
	int n = 10;
	char* p1 = (char*)&n;
	int* p2 = &n;
	printf("%p\n", p1);
	printf("%p\n", p1+1);
	printf("%p\n", p2);
	printf("%p\n", p2+1);
	return 0;
}

运行结果是:

指针变量p1的类型是char*,加一走一个字节。p2是int*类型,加一走四个字节。


two.指针数组

问题来了,指针数组是指针还是数组??指针数组是数组 是存放指针的数组。

int* arr[3];表示arr这个数组有3个元素,每个元素是一个整形指针。


three.数组指针

那么,数组指针当然是指针啦,它指向数组。

int (*p)[10];因为[]的优先

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值