数组指针 int(*P)[3] --行数组指针
来源:互联网 发布:青岛网络企业排名 编辑:程序博客网 时间:2024/04/30 05:02
对于int(*p)[3]和int*p[3]一直迷糊,一直迷糊。
今天总结一下int(*p)[3]
int (*p)[3]是数组指针(其实p是一个二级指针,*p也是指针。p指向数组,*p指向数组的首元素,**p才是首元素的值),p也称为行数组指针。p指向的是一个装有3个int类型一维数组的指针。p+1指向一下一个装有3个数据的一维数组。
p是一个行指针(二级指针),每行有3个in数据。*p是数据1的地址,*p+1是数据2的地址 *p+2是数据3的地址。
int* q;p与q是完全不同的指针了。q是指向的int类型的数据。所以赋值 p=q是错误的。
#include <iostream>using namespace std;void main(){//例子1int Test[3]={1,2,3}; // 若果 int Test[4]={1,2,3,4}就错误了,因为B只能指向有3个元素的数组int (*B)[3];B=&Test;cout << **B <<endl;//1cout << *(*B+1) <<endl;//2B++;cout <<**B <<endl;//-858993460 已经在数组外了//例子2int a[]={1,2,3,4,5,6,7,8,9,10};typedef int(*A_Type)[3];A_Type p;p=(A_Type)&a[0];cout << **p << **(p+1) <<endl; //1 4 恰好说明p类型的特点。//p是行指针,*p指向第一行的首地址//*p+0是第一行的第1个元素地址 *p+1是第一行第二个元素地址 *p+2是第一行第三个元素cout << *(*p+0) << endl; //1cout << *(*p+1) <<endl; //2cout << *(*p+2) <<endl; //3//p+1是第二行的首地址//*(p+1)+1是第二行的第1个元素地址cout << *(*(p+1)+0) <<endl;//4cout << *(*(p+1)+1) <<endl;//5cout << *(*(p+1)+2) <<endl;//6}
因为是行指针(一行里有3个int类型数据)。让我想到了二维数组。
int a[4][3] 数组a有4个数据(一维数组),每个数组里有3个int型数据。
int a[4][3]={ {11,12,13} , {21,22,23} , {31,32,33} , {41,42,43}}
第一个大数据 第二个大数据 第三个大数据 第四个大数据 每个数据里面有3个数据。
理解a[4] ={ {},{},{},{} }。a指向首地址,a+1指向 第二个数据成员,a+2指向第三个,a+3指向第4个。
这时候,发现a 与 int(*p)[3]中的p是一样的类型。所以可以用a给p赋值。
#include <iostream> using namespace std; void main() { int a[4][3]={ {11,12,13} , {21,22,23} , {31,32,33} , {41,42,43}}; int (*p)[3]; p=a; cout << *(*p+0) <<endl;//11 p=p+1; cout << *(*p+0) <<endl;//21 /*int(&r)[3]=a[2];// 一个int[3] 类型的引用,指向a中第一个元素p=&r;*/ //指针指向这个地址 对引用取地址p=&a[2]; //直接对a[2]取地址cout << **p <<endl;//31}
要记住啊int(*p)[3];
附图一张:
0 0
- 数组指针 int(*P)[3] --行数组指针
- C语言程序设计:指针数组 int *p[]
- int **p二级指针
- C语言,数组与指针:int (*)p[4]; int *q; int a[4]; int b[3][4];
- C++中int *p[4]和 int (*q)[4]的区别 (指针数组和数组指针)
- int (*p)[4] p 是二级指针 二维数组 二级指针
- 【指针常量】const int* p
- new二维数组与行数组指针
- int (*p)[3]指向由整型数据组成的数组的指针
- C语言指针 int *p[10] int (*p)[10] int *p(int) int (*p)(int) 区别与举例
- int *P;声明一个指针,没有值。
- 返回整型数据的指针int *p
- const指针,const int * p, int *const p,int const * p的区别
- C语言程序设计:指向一位数组的指针变量 int (*p)[n]
- int (*a[]) () 指针数组函数
- 数组指针(int *)(&a+1)
- c++中常量指针(int const * p),指针常量(int * const p )
- 常指针和指向常量的指针 const int *p;int * const p ;const int * const p
- 算法系列:计数排序
- javaWeb之JSON数据转换
- sqlite学习笔记11:C语言中使用sqlite之删除记录
- 关于测试人员的职业发展
- xampp和wordpress安装中mysql的相关问题
- 数组指针 int(*P)[3] --行数组指针
- c++常用算法(1)
- D3 Tutorial Table of Contents
- iOS证书申请真机调试及应用上架相关流程记录
- 深拷贝与浅拷贝 AS3 数组concat
- Struts2中常量配置default.properties默认配置文件详解
- 可是将扩大解放了撒
- Java网络编程(ECHO案列)
- 推送消息----blazeds----flex----spring