指向数组的指针问题
本帖最后由 拈花小仙 于 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;为什么此时 p是一个地址
}
}
return 0;
}C++编程小组 已知 int a则a是int类型
已知 int a a是什么类型呢,可以把这个等价为:typedef int Vec Vec a;则a类型为Vec,也就是int这个类型
已知int (*p) =...; 可以把这个等价为:typedefint Vec ; Vec *p;则 p的类型和p的类型一样,p又等价于*(p+0),也就是*p,而*p类型是Vec,也就是 int类型。所以严格说,p是一个int类型,只不过数组常常转化为首元素的指针。 本帖最后由 oggplay 于 2014-7-2 15:18 编辑
节约时间,看解释
#include <iostream>
using namespace std;
int main()
{ int i,j;
int a={3,4,5,6,7,8};
int *p ;//p表示它是一个数组,存贮3个整型变量地址即指针数组。
int (*q); //q表明它是一个指针,所指向的数组的元素是具有3个int元素的数组
//把元素3、4、5( 即a中的元素)的地址存放在p指针数组中
for( i=0;i<3;++i)
p=&a;
//输出指针数组中地址所对应值
for( j=0;j<3;++j)
cout<< *p<<" ";
cout<<endl;
q=a;//把数组a开始地址赋给指向一维数组q;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
cout<< *(*(q+i)+j)<<" "; //输出数组中元素
cout<<endl;
return 0;
}
"圣经“(<<The C programming language>>2nd)上是这么讲的
小仙! 要不要让我用反汇编给你讲啊! 嘿嘿! 青玄 发表于 2014-7-2 20:29 static/image/common/back.gif
小仙! 要不要让我用反汇编给你讲啊! 嘿嘿!
{:7_174:}谢谢青玄,一直想学汇编,苦于没什么时间,唉 青玄 发表于 2014-7-2 20:29
小仙! 要不要让我用反汇编给你讲啊! 嘿嘿!
想学NASM,现在的汇编教程好少好少哦 拈花小仙 发表于 2014-7-4 22:17
想学NASM,现在的汇编教程好少好少哦
对啊! masm还好,nasm就很少了,可是还是可以找到的!不过我的U盘丢了,上面的资料都找不到了,准备研究一个小型的操作系统呢,可现在资料都没了,不过,你在网上看一下,我想在网上应该有这方面的东西呢!虽然很少,但我想找着找着就出来了! 青玄 发表于 2014-7-5 13:33
对啊! masm还好,nasm就很少了,可是还是可以找到的!不过我的U盘丢了,上面的资料都找不到了,准备研究一 ...
{:7_174:}谢谢青玄,我还是喜欢nasm那样的,现在只喜欢能跨平台的 学习了!!!
页:
[1]