C++数组指针

#include <iostream>
using namespace std;

//数组做函数的参数:一维数组名是指向int类型的指针,二维数组名是指向int[n]类型的指针
//一维数组的做形参:
/*
void fun(int *p)
void fun(int p[])
void fun(int p[2])
*/
//一维数组的做形参:
/*
void fun(int (*p)[10])
void fun(int p[][10])
void fun(int p[2][10])
*/
//实参直接把数组名字写上就可以了




//这里声明数字是多少都没有关系,
void fun(int a[3]){
	    printf("fun: a[0] = %d\n", *(a+6));
}

void fun2(int a[]){    
	printf("fun2: a[0] = %d\n", *a);
}

void fun3(int *a){
	    printf("fun2: a[0] = %d\n", *a);
}


int main(){
	/*
	数组指针
	*/
	int(*arrPtr1)[10]=NULL;
	int matrix[3][10];
	//arrPtr是一个指向(有十个元素)数组的指针
	//matrix是指向首元素(有十个元素数组)的指针(一共有三个元素)
	arrPtr1=matrix;
	//[]是寻址符:(*arrPtr)[i] 等同于 *((*arrPtr)+i)
	(*arrPtr1)[0]=5;
	arrPtr1[2][9]=6;
	arrPtr1++;//加了40,16进制28
	(*arrPtr1)[0]=7;
	arrPtr1[1][9]=10;

	int(*arrPtr2)[10]=NULL;
	int(*arrPtr3)[10]=NULL;
	int array[10];
	//arrPtr是一个指向(有十个元素)数组的指针
	//a是指向首元素(一个整数)的指针
	arrPtr2=(int(*)[10])array;//直接写a会报错
	arrPtr3 = &array;
	arrPtr2++;//加了40,16进制的28
	arrPtr3++;//加了40,16进制的28

	/*
	数组做参数:形参写指针或者数组名都可以,实参也是
	*/
	int i = 1;
	int *p = NULL;    
	int a[10] = {1,2,3,4,5,6,7,8,9,10};     
	p = &i;     
	// fun(&i);    
	// fun(p);    
	fun(a);     
	fun2(&i);    
	fun2(p);    
	fun2(a);     
	fun3(&i);    
	fun3(p);    
	fun3(a);     
	return 0;

}







 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值