C语言 指针数组的使用

Python025

C语言 指针数组的使用,第1张

int **a可以表达一个二维数组。为什么呢?

你可以这么理解 * p[3]表达的是一个数组指针,这个指针 p[0]表示的是数组存的第一个地址。而数组实际上是一串连续地址的块。每一个小块存着一个内容。每次访问数组时,你为什么可以用数组名+下标访问呢? //比如a[i];

实际上就是 访问*a+i   * 这个符号可以表示你存的是变量的地址。而数组地址的第一位为int类型变量存的地址(你可以直接使用数组的地址加上单位变量的空间的大小去访问下个元素)。在这个程序中int *p[3] 表示可以存三个int 类型的地址。而p正好把二维数组的三个一维数组的开头的int类型变量的地址给存起来了。

给你举个例子

我现在输出的是地址,是不是连续的?

用*运算符获取地址的内容。

实际上p[i]与 *(p+i)是表达的是同一个意思。只不过只有数组可以定义一个连续的空间

(数组的第一个地址是随机的其他的是连续的。)单独用指针的话会随机分配的

数组的指针可以存三个地址。当然可以访问二维数组了。

可以

1.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。

2.数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。

3.核心思想是通过一个flag,来确定单词的起始, 每出现一个单词的起始,则表示存在一个单词。 这样统计出现的单词起始个数,即可获得单词总数。

4.对于每个字符,如果出现非空格字符,且flag为1,则为单词起始,累加计数器。同时赋值flag为0。

5.在flag为0情况下,如果出现空格,表示上一个单词已经结束,设置flag为1。