【C】指针的个人体会!!!

指针是c语言的重要部分,也是c语言的魅力所在。

  首先指针是一个可以存储地址的变量,是要找到一个地址就可以干很多事情。比如:int  a = 10;这是一个整形变量a,那么a就有一个对应的地址

普通指针:

        如果要定义一个指针可以存储a的地址,那么就可以int* p = &a;这样就可以将a的地址存储到指针变量里面,如果要对a的值进行修改就可以*p = ?进行修改。

对于char、float、bouble等类型可以同样的进行使用!

数组指针:

        指针出来可以对一般的变量进行修改,对于数组同样也是可以的,例如:int arr[] = {1,2,3,4,5,6,7,8,9};现在我们需要一个指针变量可以存储一个数组的地址,

我们都知道指针变量都有自己的类型,int型的变量就需要一个int型的指针变量来进行存储,一个数组有该如何存储,首先这个变量是一个指针而且每个元素

都是int型的,所以变量的类型就应该是int *,其次这个指针是指向一个数组如果是int *p[],那么p就会先和[]结合,这样就是一个指针数组,他的每一个元素都是int *,但是我们

需要的是一个可以存储数组的指针,应该是这样的int (*p)[] = &arr;这样p就会先和*结合,使其成为一个指针,指向一个数组,数组的每个元素都是int型。

指针数组:

      指针数组的重点是一个数组,每个元素都是指针。比如:int*arr[] = {&a,&b,&c};这样就定义好了一个指针数组。arr先和[]结合使其成为一个数组,每个元素都是int*类型的。

函数指针:

     函数的创建实在栈空间上的,那么函数也应该有自己的地址,定义一个可以存储函数地主的变量又该如何创建呢?首先函数指针变量需要一个类型,比如void  (*p)(void*,void*)这样就创建好了一个函数指针,这个指针可以指向一个参数类型为void*和void*,返回值为void类型的函数。

函数指针数组

     这句话的重点是数组,数组的每个元素是函数指针,同样这个变量也需要一个类型,例如:先是函数参数类型(void*,void*)再下来是返回类型void,所以这个函数的类型就是void  (*[])(void *,void*),定义一个指针数组的话就可以这样void (*p[])(viod*,void*) = {&a,&b,&c,...}。

指向函数指针数组的指针

     首先分析一下这个指针的目的,首先是一个可以指向函数指针数组,其次它是一个指针。这个指针的类型是例如:void (*(*)[])(void *,void *),定义一个指向函数指针数组的指针void (*(*p)[])(void*,void*),p先和*结合——p是一个指针变量,(*p)再和void (*[])(void*,void*)———Pp是一个可以指向一个函数指针数组,每个函数指针可以指向一个void*,void*类型的参数,返回值为void类型的函数。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test(int x)
{
	printf("hehe\n");
}
int main()
{
	int i = 0;
	int *p = &i;     //定义一个指向整形变量的指针
	int *pa[] = {&i};//定义一个整形指针的指针数组
	int (*pp)[] = pa;//定义一个整形指针数组的指针
    void (*p)(void*,void*) = test;//定义一个可以指向参数为void*,void*类型返回值为void类型的
	void (*(*p)[])(void*,void*) = {p};//定义一个可以指向一个指向参数为void*,void*
	                                   //返回值为void类型的函数指针数组
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值