行指针和列指针

在说行指针之前,先看几种指针类型(以int为例)

  1. int* a;//a是指向整形的指针;  
  2. int* a[5];//一维指针数组(这里存放着5个指向整形的指针),a指向第一个元素的地址,a+1指向第二个......(a[5]是一个指针数组);  
  3. int (*a)[5];//指向数组(这里每个一维数组含5个元素)的指针,a是第一个一维数组的首元素地址,a+1指向第二个一维数组的首元素地址......(a是数组指针);  
  4. int (*a)();//a是指向函数的指针(函数指针);  
  5. int *a();//函数的返回类型是int *,a只是一个函数名;  
int* a;//a是指向整形的指针;
int* a[5];//一维指针数组(这里存放着5个指向整形的指针),a指向第一个元素的地址,a+1指向第二个......(a[5]是一个指针数组);
int (*a)[5];//指向数组(这里每个一维数组含5个元素)的指针,a是第一个一维数组的首元素地址,a+1指向第二个一维数组的首元素地址......(a是数组指针);
int (*a)();//a是指向函数的指针(函数指针);
int *a();//函数的返回类型是int *,a只是一个函数名;

 

常用的一维数组,如:

  1. int a[5];  
  2. //a是一个指向非常量的常量指针,即a本身的值不能变如a=a+1就出错,但是a指向的地址的值可以变如*a=1123,此处a数据类型即是int * const;  
  3. //a的值是该数组第一个元素的地址,即a=&a[0];  
  4. //*a即第一个元素的值;  
int a[5];
//a是一个指向非常量的常量指针,即a本身的值不能变如a=a+1就出错,但是a指向的地址的值可以变如*a=1123,此处a数据类型即是int * const;
//a的值是该数组第一个元素的地址,即a=&a[0];
//*a即第一个元素的值;

 

常用的二维数组,如:

  1. int a[3][5];  
  2. //此处,a也是一个指向非常量的常量指针,如果要说什么才是行指针?那么这里的a便是!  
int a[3][5];
//此处,a也是一个指向非常量的常量指针,如果要说什么才是行指针?那么这里的a便是!

 

写法解释指针类型
a+0或&a[0]指向第1个一维数组的地址(指向第1行)行指针
a+1或&a[1]指向第2个一维数组的地址(指向第2行)行指针
a+2或&a[2]指向第3个一维数组的地址(指向第3行)行指针

行指针是指向数组的指针,即上面几种指针类型中的 int (*a)[5];所以,当二维数组要被当做参数进行传递时,可以这样声明

  1. void funcByRowPtr(int (*p)[5],const int row);

     2.void funcByRowPtr(int p[][5],const int row);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值