二维数组与指针
本帖最后由 拈花小仙 于 2014-7-5 19:47 编辑#include <iostream>
using namespace std;
int main()
{
int a = { {1,2,3}, {4,5,6} };
int (*p) = a;
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
cout << *(*(p + i) + j) << endl;// *(p+i)好理解些,p的地址+i在解引用,
// 可 *(*(p + i)+j) 我就不明白了。*(p+i),*的优先级高于+
运算符,
//那么一个解引用后的数字在+j ?
// 推测下结果是能输出,可这该怎么解释呢?
}
}
return 0;
}
C++编程小组 从形式上说,*(p+i)等价于p,暂时称此为公式1
所以,利用公式1,*(*(p + i) + j)等价于*(p+j),
再次利用公式1,*(p+j)又等价于p 这是指针的知识。。我一直想说。。小仙。。你能不能不要学的太那个了。你看你。。指针基本知识都不会。。还去学java什么的。。。。没有意思。。。。学学API嘛。。windows程序设计。。这本书。。
这个是最基本的指针只是。。知道内存排列。。就很好懂了。。不知道耶好懂。。其实。。。
哎。。我就不解释了。。。真是的。。。你就不要这么浮躁了嘛。。。 “int (*P)=a;”表示定义指向一维数组的指针变量,即行数组指针:
它表示,数组*p有3个int型元素,分别为(*p)、(*p)、(*p)、(*p) ,即p指向的是有3个int型元素的一维数组,即p为行指针 向往青莲 发表于 2014-7-1 14:23 static/image/common/back.gif
这是指针的知识。。我一直想说。。小仙。。你能不能不要学的太那个了。你看你。。指针基本知识都不会。。还 ...
我都是边做题,有不懂的,查不到就问下哈,正好做到这题,这种用法很久以前就懂,但不能完全理解。 hfut_wangfei 发表于 2014-7-1 16:14 static/image/common/back.gif
“int (*P)=a;”表示定义指向一维数组的指针变量,即行数组指针:
它表示,数组*p有3个int型元素 ...
还是不懂哦,小仙底子差 向往青莲 发表于 2014-7-1 14:23 static/image/common/back.gif
这是指针的知识。。我一直想说。。小仙。。你能不能不要学的太那个了。你看你。。指针基本知识都不会。。还 ...
我从来没说学JAVA呀,我问下别的也只是为了开拓下眼界,学下学,了解是了解啦{:7_181:} 写了一下,看注释#include <iostream>
using namespace std;
int main()
{
int a = { {1,2,3}, {4,5,6} };
int (*p) = a;
int i,j;
for (i = 0; i < 2; ++i)
{
for (j = 0; j < 3; ++j)
{
printf("a[%d][%d]=%d,0x%p\t" , i,j,a,&a);
}
printf("\n");
}
printf("\n*******************************************\n");
for (i=0;i<3;i++)
{
printf("(*p)[%d]=%d,0x%p\t" , i,(*p),&((*p)) );
}
printf("\np的值 0x%p\n",p);
p++;
printf("\np的值 0x%p\n",p);//看下内存的跨越值,为0xC 即 12,p指向的是3个整形组成的数组,12个字节
printf("\n*******************************************\n");
//理解这段打印结果,差不多就理解二维数组了
int* pp = (int*)a;
for (i=0;i<6;i++)
{
printf("%d,",*pp);
pp++;
}
printf("\n*******************************************\n");
for (i = 0; i < 2; ++i)
{
for (j = 0; j < 3; ++j)
{
cout << *(*(p + i) + j) << endl;//一直只知道这么写,却一直没想通为什么,求详细的解答。
}
}
return 0;
} 仰望天上的光 发表于 2014-7-1 11:40 static/image/common/back.gif
从形式上说,*(p+i)等价于p,暂时称此为公式1
所以,利用公式1,*(*(p + i) + j)等价于*(p+j),
再次利 ...
导师每次解答都通俗易懂,而且还能理解我们新手因技术低,问出的一些难理解的疑问。而且都是原创。小仙每次看到导师来答,都好激动哦!而且导师每次的解答都令我们技术低的人有所启发,告诉我们这题要组合起来看。真的好佩服导师。 从形式上说,*(p+i)等价于p,暂时称此为公式1
所以,利用公式1,*(*(p + i) + j)等价于*(p+j),
再次利用公式1,*(p+j)又等价于p 戏++ 发表于 2014-7-1 16:58 static/image/common/back.gif
写了一下,看注释
{:7_181:}太感谢了,可我技术比较差,看的不是很懂,导师那个太好懂了。有机会小仙会多多补偿 拈花小仙 发表于 2014-7-1 18:24 static/image/common/back.gif
太感谢了,可我技术比较差,看的不是很懂,导师那个太好懂了。有机会小仙会多多补偿
呵呵,不客气,导师讲的确实挺好,学习了 qq893161525 发表于 2014-7-1 18:22
从形式上说,*(p+i)等价于p,暂时称此为公式1
所以,利用公式1,*(*(p + i) + j)等价于*(p+j),
再次 ...
http://bbs.fishc.com/group-264-1.html 谢谢分享{:1_1:}
页:
[1]