指针数组与数组指针
C++细节问题,学习时遇到的问题
int *p=NULL;相当于int *p; p=NULL;声明一个int指针,然后指向为空。
int *p;*p=NULL;这样写一般会有警告,看警告信息就明白了,*p是取指针的值,也就是p所指向的整数,而NULL是指针类型,这里是将指针类型复制给整形。
int *p[3] p是一个数组,此数组有3个元素,每个元素都是int*类型,也就是指向整型数据的指针类型。
int a=10,b=20,c=30;
int*p[3]={&a,&b,&c};
而int(*p)[3]中的p是一个指向数组的指针,此数组有3个int类型的元素。例如:
int a[3]={1,2,3}; 那么p就是指向这个数组a的指针。
int(*p)[3]=&a; // 这里赋值一定要用取地址符号。也就是取数组a的地址。
不可以这样赋值: int(*p)[3]=a; // error :类型不兼容。a本来是数组类型,是不可以赋值给int(*)[3]这个类型的。
C++细节问题,学习时遇到的问题
但是这样是可以的int *p1=a; // ok 因为a可以隐式转换为int*类型,其值实际上就是数组第一个元素的地址,也就是&a[0]
*p[3] 这个是一个指针数组 它所代表的意思是每一个元素都相当于一个指针变量
而(*p)[3] p是一个指针变量,表示指向含有3个整型元素的一维数组
前者可以类似于二维数组 把它看成是由3个一维数组组成的 经常与字符串搭配使用 比较方便操作 把多个字符串放在一个指针数组中
后者是用来引用二维数组的 像a[2][3]这个二维数组 我们既可用指针来引用 又可用(*p)[3]来引用 一般使用(*p)[3
#include <iostream.h>
C++细节问题,学习时遇到的问题
int main()
{ int i,j;
int a[2][3]={3,4,5,6,7,8};
int *p[3] ;//表示存贮是3个整型变量地址;
int (*q)[3]; //表示指向3个整型数组元素的一维数组指针
//把第一行三个元素地址存放在p指针数组中
for( i=0;i<3;++i)
p[i]=&a[0][i];
//输出指针数组中地址所对应值
for( j=0;j<3;++j)
cout<< *p[j]<<" ";
cout<<endl;
q=a;//把数组a开始地址赋给指向一维数组q;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
cout<< *(*(q+i)+j)<<" "; //输出数组中元素
return 0;
}
C++细节问题,学习时遇到的问题
int *a; //整型指针
int **a //指向指针的指针,它指向的指针是指向一个整数
int *a[10]; //指针数组,每一个元素都是一个指向整数的指针 int (*a)[10];//一个指针,指向有10个整数的数组
int (*a)(int,int);//一个函数指针,该函数返回一个int,参数有2个int int (*a[10])(int);//一个指针数组,每个元素都是一个函数指针,每个函数都是返回int,有一个int参数
类似的还有
int (**a)[10];
int *(*a)(int);
int *(*a[10])(int,int);
不充:
int a[2][3]={1,2,3,0,0,0};
//int a[3]={1,2,3};
int(*p)[3];
p=&a[0][0]; error C2440: '=' : cannot convert from 'int *' to 'int (*)[3]'
C++细节问题,学习时遇到的问题
p=a[0] 也错,error C2440: '=' : cannot convert from 'int [3]' to 'int (*)[3] 正确:p=a; or p=&a[0];
int a[2][3] ,*p[3] ,p=a为什么是错的 p[o]=a是对的
[此问题的推荐答案]
语句整理如下: int a[2][3] ,*p[3]; /*a[2][3]二维数组;*/ /*p[3]指针数组(注意:不是数组指针)*/ a可以作为地址来使用,a的值为&a[0][0]; p为指针数组首地址,p的值为&p[0]; 由此可知p是一个常量地址值&p[0]不能进行赋值。而p[0]则是一个指针变量。 论证完毕... 不懂的话,百度hi我。
int*p[3],a[2][3];则p[0]=&a[1][2]这个赋值语句为何不对呢?谢谢啦 int* p[3],a[2][3];
等价于
int* p[3];
int* a[2][3];
C++细节问题,学习时遇到的问题
p[0]的类型是 int*
a[1][2]的类型也是 int*
&a[1][2]的类型是 int**
所以p[0] = &a[1][2]是类型不匹配的。
最佳答案 不能转换 int类型为int指针类型
int a = 9 ; //ok
int *pa = &a; //ok
int *pa = 9 ;//error C2440
int *pa;
*pa = 8 ; //errorC4700
C4700 错误中 *pa 没有实际的指向位置,所以不能赋值
int *pa ;
int a;
pa = &a;
*pa = 1234; //ok
…… 此处隐藏:524字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




