指针数组与数组指针 指针函数与函数指针 的区别

 指针数组与数组指针 

指针数组

指针数组是一个数组,数组的元素保存的是指针;

数组指针

数组指针是一个指针,该指针指向的是一个数组;

#include <stdio.h>

#define SIZE 5

int main(int argc, char const *argv[])
{
	int arry[5]  = {1,2,3,4,5};
	int (*p)[SIZE] =  &arry ; //数组指针,该指针指向一个数组;
	for(int i = 0 ; i < SIZE ; i++)
	{
		arry[i] = (i + 1) * 10 ;
		printf("%d:%d\n",(*p)[i],*(p[i]));
		printf("%p\t%p\t%p\t%p\n",&(p[i]),p[i],&(*p)[i],&(arry[i]));
	}
	printf("\n\n\n");
	int *p1[SIZE] = {nullptr,nullptr,nullptr,nullptr,nullptr} ; //指针数组;
	
	p1[0] = arry; //p1[[0]是一个指针;
	//p[0] = arry ; 语法错误 p[0]是一个数组;
	
	for(size_t i = 1 ;i < SIZE ; i++)
	{
		p1[i] = new int[SIZE] ;
		for(int j = 0 ; j < SIZE ; j++)
		{
			p1[i][j] = i * (j + 1);
		}
	}

	for(size_t i = 0 ;i < SIZE ; i++)
	{
		for(size_t j = 0 ; j < SIZE ; j++)
		{
			printf("%p:%d\t",&p1[i][j],p1[i][j]);
		}
		printf("\n%d:%d\n",(*p)[i],*(p[i]));
		printf("%p\t%p\t%p\t\n\n",&(p1[i]),p1[i],&(*p1)[i]);
	}
}

指针函数与函数指针

指针函数

指针函数是一个函数,该函数返回的是一个指针;

函数指针

函数指针是一个指针,该指针指向一个函数;

#include <stdio.h>

int* getIntPoint(const int a) //指针函数,是一个函数 返回一个指针;
{
	int *p = nullptr ;
	p = new int ;
	*p = a; 
 	return p ;
}


int main(int argc, char const *argv[])
{
	int *(*p)(int)  = getIntPoint ; //函数指针,该指针指向一个函数;
	int* pInt = p(5); //使用函数指针;
	printf("%d\n",*pInt);
	delete pInt ;
	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值