2021-05-30数组指针和普通指针的关系(除了值相等)

数组指针和普通指针的关系(除了值相等)

/******************************************************
 *  将数组指针转化为普通指针有两种方法:          
 *     1、将数组指针解引用如(funca,funcb)            
 *     2、将数组指针强制类型转化为普通指针如(funcc)  
 *  按照C语言的逻辑,int a = 1; int *p = &a; *p就直接等于a
 *  的值了,所以一个*号就可以抵消到一个&,那么数组指针需要的是
 *  &a(a为数组),即为&&a[0],那么我们想要的是a,就是&a[0]
 *  那么对数组指针解引用一次即可。
 ******************************************************/

#include <stdio.h>

//解引用
void funca(int m, char *(*p)[]);
void funcb(int m, char *(*p)[]);

//强制类型转换
void funcc(int m,char *(*p)[]);

int main()
{
	char *p[] = {"a","v","b"};
	
	funca(sizeof(p)/4,&p);
	printf("\n");
	funcb(sizeof(p)/4,&p);
	printf("\n");
	funcc(sizeof(p)/4,&p);
	
	return 0;
}

/********************************************
 *【1】对数组指针解开引用,就是普通指针      
 *      用法: (p1是数组指针,p2是普通指针)      						
 *          a.   char **p2 = *p1;  *(p2+i)  
 *          b.   (*p1)[i]   				    	        
 *【2】对数组指针强制类型转换      			
 *      用法: char ** p2 = (char **)p1;    
 ********************************************/
 //方法a
void funca(int m, char *(*p)[])
{
	int i = 0;
	char **p2 = *p;
	
	for(i; i < m; i++)
	{
		printf("%s.\n",*(p2+i));
	}
}

//方法b
void funcb(int m, char *(*p)[])
{
	int i = 0;
	//char **p2 = *p;
	
	for(i; i < m; i++)
	{
		printf("%s.\n",(*p)[i]);
	}
}


//强制类型转换
void funcc(int m, char *(*p)[])
{
	int i = 0;
	//char **p2 = *p;
	char **p2 = (char **)p;
	for(i; i < m; i++)
	{
		printf("%s.\n",(*p)[i]);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值