这就是声明一个指向带有10元素的数组的指针.在我刚开始学习C的时候曾经认为数组和指针是同一个概念.但是后来证明是错的.比如这样吧:
int a[10][10]
你就绝对不可能把a转成指针的指针.实际上在下面这个例子中:
int a[10];
*a = 1;
是进行了一次类型转换的.把数组转换成了指针.
而指针数组则是一组指针,每个指针可以指向不同的内存区,也可以指向相同的内存区,其内存的分配方式是与数组不同的.数组是一组固定的连续的大小相同的内存.

解决方案 »

  1.   

    请问
    在我的机器上用bc3.0运行时
    声明int (* ptr)[10]  与int *ptr[10]都一样
    这两种方法是否完全相同?
    还有, 对于数组名是否可以把它理解为一个指针常量
    (像指针变量一样占有储存地址 只是不能被修改)
    如:  对于a[10]来说 a有储存地址并且a的内容为数组的首地址
    不知小弟的理解是否正确,请各位高手指教.
      

  2.   

    to :tigerjade
    请问
    在我的机器上用bc3.0运行时
    声明int (* ptr)[10]  与int *ptr[10]都一样
    这两种方法是否完全相同?
    还有, 对于数组名是否可以把它理解为一个指针常量
    (像指针变量一样占有储存地址 只是不能被修改)
    如:  对于a[10]来说 a有储存地址并且a的内容为数组的首地址
    不知小弟的理解是否正确,请各位高手指教.
      

  3.   

    一看就知道你也是计算机专业出身的。
    在C,C++中,数组名就是指针常量。但是它与其他的常量不同。
    其它常量占有存储空间,只是不允许改变。数组名的值是在程序的代码的部分,而不是在数据的部分,不过使用起来和指针常量相同。
    如果要类比以下的话,应该是更像define产生的东西。
    书组的名称的值是书组的第一个元素的地址
    这是我的一贯理解。
    声明int (* ptr)[10]  与int *ptr[10]不一样,因为[]的优先级比*的高,所以ptr要先于[]结合,加上()以后就不同了。
      

  4.   

    Thanks Sunlet
       果然好眼力,我也是计算机专业出身的,不过还没毕业.I will give you the point.