int *a[10]与int (*a)[10]的区别,

本文详细解析了 C++ 中 int*a[10] 和 int(*a)[10] 的区别,前者定义了一个包含 10 个整型指针的数组,后者定义了一个指向整型数组的指针。同时介绍了如何使用数组引用作为函数形参,并展示了通过引用传递数组时如何保持其长度信息。

int *a[10]; 定义了一个指针数组,即10个int * 类型的指针。

int (*a)[10]; 定义了一个指向行的指针变量,注意是”一个”指针变量,而上面的指针数组是”10个”指针变量。指向行的指针变量可以用来指向二位数组int x[N][10],

a指向x即:

a <==> x 或者 x[0] 或者 &x[0][0]

a+1 <==> x[1] 或者 &x[1][0]

a+2 <==> x[2] 或者 &x[2][0]...

另外:*(a+i)+j <==> x[i][j]

int (*)a[10]没有这种用法


微笑微笑数组的引用作为函数形参:

当参数是数组的名字时,函数接收数组的首地址,维数丢失
当参数是数组的引用时,函数接收数组的首地址和维数
int sz[10];
void function(int *p, int size);//传名字的一般的写法
void function(int (&arr)[10]);//传引用的一般的写法


  1. #include <iostream>  
  2. using namespace std;   

  3. void fun(char (&buff)[11])//括号里必须有11才不报错 
  4. { 
  5.     cout<< buff; 
  6. }   

  7. int main(int argc, char *argv[])  
  8. {  
  9.     char buff[] = "helloworld";  
  10.       
  11.     fun(buff);  
  12.       
  13.     return 0;  
  14. }  
  15.  
  16. c++的数组类型是带有长度信息的,引用传递时如果指明是数组则必须指定长度


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值