C 语言中的数组类型和数组指针类型.

原创 2004年07月17日 14:15:00

#include <iostream>
using namespace std;

int main()
{
    //等长的二维数组:
    int aInt2dArrayOnStack[2][8];
    int* pIntArray = aInt2dArrayOnStack[0];//int * == int [];
    int (*pInt2dArray)[8] = aInt2dArrayOnStack; // int (*)[8] == int [][8]

    //有了上面的经验,以下部分就可以理解了.
    int (*pInt2d)[8] = new int[2][8];
    int* pInt = *pInt2d; // *pInt2d = int[8]
    int aInt = **pInt2d; // **pInt2d = int[0][0]

    //以下就当练习了
    cout << sizeof(aInt2dArrayOnStack) << endl;
    cout << sizeof(pInt2d) << endl;
    cout << sizeof(*pInt2d) << endl;
    cout << sizeof(pInt2d[0]) << endl;
    cout << sizeof(**pInt2d) << endl;

    return 0;
}

/*
这里的关键大概是类型吧:
谁知道以下类型有什么区别吗?
int
int *
int []
int (*)[]
int *[]
int **
int [][]

指针类型有:
int *
int []
int (*)[]
int **

其长度都为4, 可以自动转换的是int * 和int [].
因为数组具有指针的本质.

可以强制转换的是int* <=> int (*)[]和int [] <=> int (*)[]
因为二维数组本质上是一维的.

int **是指针的指针, 它与上面的类型完全不相等.


数组类型有:
int []
int *[]
int [][]

都是数组,长度与它的元素数有关.假设类型为:
int [N]
int *[N]
int [N][N]

那么int [N]和int *[N]的长度为 4*N以外, 它们都是一维数组,前者是一维int数组,后者是一维int*的数组.
而int [N][N] 为 N*N*4, 它是二维数组.

指向二维数组的指针如何定义呢?
是int (*)[N][N] 还是int (*)[N];

也是个练习吧.
*/

C语言数组、指针强制类型转换

今天在写到代码的时候,因为要将数据写入到flash中去,这块flash规定每次写入两个字节,然后发现了一个挺好玩的事情,那就是类型强制转换。 通过测试发现char类型强制转换成short或者int类...
  • fyblablabla
  • fyblablabla
  • 2017-04-29 21:04:14
  • 1961

C语言中函数返回数组;数组与指针的区别

首先说下数组与指针的区别 char a[] = “abcdefg”; char *p = “abcdefg” ; 1 a就是数组的首地址 2 数组的内容可以修改,指针的内容不可以修改 ...
  • weixin_37569251
  • weixin_37569251
  • 2017-10-17 17:31:24
  • 85

C语言学习之数组指针和指针数组

数组指针和指针数组的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说...
  • u014410695
  • u014410695
  • 2016-01-21 10:07:10
  • 280

C语言中数组与指针的结合

C语言中数组与指针的结合 1.数组的内存布局 数组的元素在内存中的连续排列,也就是说数组元素的地址是连续增加的。定义数组,     char c[6]; 数组元素在内存中的排列是,c[0],c[1]...
  • Const_Gong
  • Const_Gong
  • 2015-07-25 23:33:14
  • 375

12.5 C语言字符数组和字符指针

常量和符号常量 在程序运行过程中,其值不能被改变的量称之为常量。常量分为不同的类型,有整型常量如 1、2、3、100;浮点型常量 3.14、0.56、-4.8;字符型常量„a‟、„b‟、„0‟;字符...
  • softn
  • softn
  • 2016-07-07 05:57:16
  • 361

C语言中关于指针的易混淆、难理解的知识点

指针 指针基础知识 指针,就是内存中的一个地址。 计算机内存中的每个位置都由一个地址标识。通常,临近的内存位置合成一组,就允许存储更大范围的值。可以用指针指向这个范围的首地址,从而实现对数据...
  • hmxz2nn
  • hmxz2nn
  • 2018-03-23 23:33:48
  • 24

C语言中的基本类型

1、整形int a = 10 ; 十进制,格式化输出:%i int b = 0743;八进制,格式化输出:%o %#o(输出前导符号0) int c = 0x7f3d;十六进制,格式化输出:%x...
  • wufuzeng
  • wufuzeng
  • 2016-11-29 15:53:23
  • 598

C语言中如何将二维数组作为参数传递

重新认识并理解一下作为参数的数组和指针之间的关系
  • qq_38722097
  • qq_38722097
  • 2017-10-22 21:19:49
  • 168

c语言-数据类型-构造类型

利用计算机存处理单一的数据是比较容易,比如一个人的某一科成绩,直接创建一个变量存储相应的分数就可以了,但是要同时处理多个科目的时候,这时候就有点麻烦了,同时创建多个变量存储多个科目这样子显得有点奇怪不...
  • OnionOmelette
  • OnionOmelette
  • 2015-02-04 18:47:34
  • 3994

C语言定义数组指针的三种方法

C语言定义数组指针的三种方法C语言中有一种语法叫做数组指针,就是使用一个指针变量指向一个数组,然后对数组进行访问操作. 下面给出代码示例定义的方法, 代码如下:#includeint main(){...
  • ic_tv
  • ic_tv
  • 2015-07-14 22:47:30
  • 7804
收藏助手
不良信息举报
您举报文章:C 语言中的数组类型和数组指针类型.
举报原因:
原因补充:

(最多只允许输入30个字)