int *p[4]和 int (*q)[4]的区别
来源:互联网 发布:鞋子淘宝店 编辑:程序博客网 时间:2024/06/06 02:43
前者是指针数组,后者是指向数组的指针。更详细地说。
前: 指针数组;是一个元素全为指针的数组.
后: 数组指针;可以直接理解是指针,只是这个指针类型不是int也不是char而是 int [4]类型的数组.(可以结合函数指针一并看看......)
int*p[4]------p是一个指针数组,每一个指向一个int型的
int (*q)[4]---------q是一个指针,指向int[4]的数组。
两者在定义的时候如下:
int k;
cin>>k;
char *p[2];
p[0]=new char[k];
p[1]=new char[k];
char (*b)[2];
b=new char[k][2];
这样空说是不是依旧小白?举个例子
- #include <iostream>
- using namespace std;
- int main()
- {
- int *p[4]; //p是一个指针数组,每一个指针都指向一个int型数据
- int a=1,b=2,c=3,d=4;
- int i;
- p[0]=&a;
- p[1]=&b;
- p[2]=&c;
- p[3]=&d;
- int (*q)[4];//q是一个指针,指向int[4]数组
- //q[0]=&a;//error q是指向int[4]数组的指针,而&a是一个int型指针,所以不能赋值
- int aa[4]={5,6,7,8};
- q=&aa;
- cout << "p的值:" << p << endl; //注意,p不等于p[0]
- cout << "p[0]的值:" << p[0] << " a的地址:" << &a << endl;
- cout << "p[0]地址保存的值:" << *(p[0]) << " a的值:" << a << endl;
- cout << "p[1]地址保存的值:" << *(p[1]) << " b的值:" << b << endl;
- cout << "p[2]地址保存的值:" << *(p[2]) << " c的值:" << c << endl;
- cout << "p[3]地址保存的值:" << *(p[3]) << " d的值:" << d << endl;
- cout << "q的值:" << q << " aa的地址:" << &aa << endl;
- cout << "q[i]的地址:" << endl;
- for(i = 0; i < 4; ++i)
- cout << q[i] << endl;//q[0] 与 q的值相同
- cout << "q指向int[4]的所有值:" << endl;
- for(i = 0; i < 4; i++)
- cout << q[0][i] << ' ';
- cout << endl;
- //cout<<*(p[0])<<*(q[0])<<endl;
- return 0;
- }
#include <iostream> using namespace std; int main() { int *p[4]; //p是一个指针数组,每一个指针都指向一个int型数据 int a=1,b=2,c=3,d=4; int i; p[0]=&a; p[1]=&b; p[2]=&c; p[3]=&d; int (*q)[4];//q是一个指针,指向int[4]数组 //q[0]=&a;//error q是指向int[4]数组的指针,而&a是一个int型指针,所以不能赋值 int aa[4]={5,6,7,8}; q=&aa; cout << "p的值:" << p << endl; //注意,p不等于p[0] cout << "p[0]的值:" << p[0] << " a的地址:" << &a << endl; cout << "p[0]地址保存的值:" << *(p[0]) << " a的值:" << a << endl; cout << "p[1]地址保存的值:" << *(p[1]) << " b的值:" << b << endl; cout << "p[2]地址保存的值:" << *(p[2]) << " c的值:" << c << endl; cout << "p[3]地址保存的值:" << *(p[3]) << " d的值:" << d << endl; cout << "q的值:" << q << " aa的地址:" << &aa << endl; cout << "q[i]的地址:" << endl; for(i = 0; i < 4; ++i) cout << q[i] << endl;//q[0] 与 q的值相同 cout << "q指向int[4]的所有值:" << endl; for(i = 0; i < 4; i++) cout << q[0][i] << ' '; cout << endl; //cout<<*(p[0])<<*(q[0])<<endl; return 0; }
运行结果:
p的值:0x22ff60
p[0]的值:0x22ff5c a的地址:0x22ff5c
p[0]地址保存的值:1 a的值:1
p[1]地址保存的值:2 b的值:2
p[2]地址保存的值:3 c的值:3
p[3]地址保存的值:4 d的值:4
q的值:0x22ff30 aa的地址:0x22ff30
q[i]的地址:
0x22ff30
0x22ff40
0x22ff50
0x22ff60
q指向int[4]的所有值:
5 6 7 8
定义涉及两个运算符:“*”(间接引用)、“[]”(下标),“[]”的优先级别大于“*”的优先级别。
请看以下定义:
int a[2][4]={{2,5,6,8},{22,55,66,88}};
int c[4]={5,8,9,4};
int d[3]={23,12,443};
int *p[4],(*q)[4];
q=a;
*p=c;
*(p+1)=d;
则int *p[4]和int (*q)[4]的存储数据为:
验证:
#include <stdio.h>
int main(void)
{
}
输出结果为:
*(*(p+0)+0)=5
*(*(p+0)+1)=8
*(*(p+0)+2)=9
*(*(p+0)+3)=4
*(*(p+1)+0)=23
*(*(p+1)+1)=12
*(*(p+1)+2)=443
===============
*(*(q+0)+0)=2
*(*(q+0)+1)=5
*(*(q+0)+2)=6
*(*(q+0)+3)=8
*(*(q+1)+0)=22
*(*(q+1)+1)=55
*(*(q+1)+2)=66
*(*(q+1)+3)=88
#include <stdio.h>
int main(void)
{
}
输出结果为:
*(*(p+0)+0)=5
*(*(p+0)+1)=8
*(*(p+0)+2)=9
*(*(p+0)+3)=4
*(*(p+1)+0)=23
*(*(p+1)+1)=12
*(*(p+1)+2)=443
===============
*(*(q+0)+0)=2
*(*(q+0)+1)=5
*(*(q+0)+2)=6
*(*(q+0)+3)=8
*(*(q+1)+0)=22
*(*(q+1)+1)=55
*(*(q+1)+2)=66
*(*(q+1)+3)=88
- int *p[4]和 int (*q)[4]的区别
- [C] int *p[4]与int (*q)[4]的区别
- C++中int *p[4]和 int (*q)[4]的区别 (指针数组和数组指针)
- C++中int *p[4]和 int (*q)[4]的区别
- C++中int *p[4]和 int (*q)[4]的区别
- C++中int *p[4]和 int (*q)[4]的区别
- C++中int *p[4]和 int (*q)[4]的区别
- int *p[4] 与 int (*q)[4] 区别
- 【C/C++】int *p[4]与int (*q)[4]的区别
- 关于int(*p)[4]与int *p[4]的区别
- int* p = new int[5](); 与 int* q = new int[5]; 的区别
- 指针问题:C语言中 int*p[4] 和 int(*p)[4]的区别 等等
- int *p[4]; int p[4]; int **p; int *(p[4]); int (*p)[4]这5种的区别与联系
- int *p[10]和int (*p)[10]之间的区别
- const int *p 和 int* const p 的区别详解
- int *p[3] 和int (*p)[3] 的区别
- int *p[3]和int (*p)[3] 的区别,举例说明
- C++中关于int *p和 int* p的区别?
- PPT新视角——VBA应用技术
- 自动安装apk
- yingwen
- UVa 11584 - Partitioning by Palindromes 回文串dp
- 使用FFMPEG合并视频
- int *p[4]和 int (*q)[4]的区别
- 页面跳转
- jni动态注册
- VC++动态链接库编程之MFC规则DLL
- MySQL详解:日志类型
- 如何让照片小于20K
- 年轻的优秀博士:网络牛人刘云浩,王新兵,朱其立
- android豆瓣apiv2电影/音乐/书籍搜索及图片异步下载/json解析
- 哈佛为什么群星闪耀?