拈花小仙 发表于 2014-7-2 13:36:53

指向数组的指针问题

本帖最后由 拈花小仙 于 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++编程小组

仰望天上的光 发表于 2014-7-2 13:36:54

已知 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 14:43:44

本帖最后由 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:47

小仙! 要不要让我用反汇编给你讲啊! 嘿嘿!

拈花小仙 发表于 2014-7-2 22:10:53

青玄 发表于 2014-7-2 20:29 static/image/common/back.gif
小仙! 要不要让我用反汇编给你讲啊! 嘿嘿!

{:7_174:}谢谢青玄,一直想学汇编,苦于没什么时间,唉

拈花小仙 发表于 2014-7-4 22:17:42

青玄 发表于 2014-7-2 20:29
小仙! 要不要让我用反汇编给你讲啊! 嘿嘿!

想学NASM,现在的汇编教程好少好少哦

青玄 发表于 2014-7-5 13:33:49

拈花小仙 发表于 2014-7-4 22:17
想学NASM,现在的汇编教程好少好少哦

对啊! masm还好,nasm就很少了,可是还是可以找到的!不过我的U盘丢了,上面的资料都找不到了,准备研究一个小型的操作系统呢,可现在资料都没了,不过,你在网上看一下,我想在网上应该有这方面的东西呢!虽然很少,但我想找着找着就出来了!

拈花小仙 发表于 2014-7-5 17:41:06

青玄 发表于 2014-7-5 13:33
对啊! masm还好,nasm就很少了,可是还是可以找到的!不过我的U盘丢了,上面的资料都找不到了,准备研究一 ...

{:7_174:}谢谢青玄,我还是喜欢nasm那样的,现在只喜欢能跨平台的

xiaver 发表于 2014-7-6 21:21:20

学习了!!!
页: [1]
查看完整版本: 指向数组的指针问题