黑马程序员技术交流社区
标题:
C指针问题
[打印本页]
作者:
2的狠正经
时间:
2014-5-8 08:58
标题:
C指针问题
int *p[5]
int (*p)[5]
他们各表示的是什么
作者:
张海龙重新起航
时间:
2014-5-8 09:15
int *p[5],是一个数组,它的大小是5,存放的数据类型是int *,也就是整型指针。 所以它叫指针数组。
int (*p)[5],p是一个指针,指向大小为5的数组,因此这叫数组指针。
作者:
agelessman
时间:
2014-5-8 09:55
int *p[5]是个指针数组,p是数组不是指针,这个数组里面存放5个int类型的指针
int (*p)[5]是数组指针,p是指针,不是数组 ,我是这样理解的
举个例子
int a[2][5]={{0,1,2,3,4},{5,6,7,8,9}};
int(*p)[5]=a;
printf("%d\n",(*p)[0]);
打印下就能看出了 ,吧(*p)[]后边中括号的改下数组打印看下结果,还有(*(p+1))[]中括号中输入数字打印看下就直白了
作者:
吉大人
时间:
2014-5-8 10:18
我发表了一个相关的帖子
作者:
UT丶
时间:
2014-5-8 12:01
(1)int* p[2] 是一个指向int型的指针数组,即:p是包含两个元素的指针数组,指针指向的是int型。
可以这样来用:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
void main() {
int* p[2];
int a[3] = {1, 2, 3};
int b[4] = {4, 5, 6, 7};
p[0] = a;
p[1] = b;
for(int i = 0; i < 3; i++) cout << *p[0] + i;// cout << **p + i;
cout << endl;
for(i = 0; i < 4; i++) cout << *p[1] + i;// cout << **p + i;
}
(2)对于int (*p)[2], 它相当于一个二维数组的用法,只是它是一个n行2列的数组,可以这样来用:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
void main() {
int (*p)[2];
int b[3][2] = {{1, 2}, {3, 4}, {5, 6}};
p = b;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 2; j++) //cout << p[i][j]; //cout << *(*(p+i)+j);
cout << endl;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2