C语言数组指针?

Python04

C语言数组指针?,第1张

int (*pstu)[4] 为指向有4个元素的数组指针

int* getPosPerson(int pos, int (*pstu)[4]) 为返回值为指针的函数

注意这是指针函数,而不是函数指针,后者为指向函数的指针变量,两者含义是不同的

(类似指针数组和数组指针,两者含义也是不同的,一个本质是数组,一个本质是指针)

调用该函数的语句为:ppos = getPosPerson(pos, scores)

传入的scores表示3行4列的二维数组首行数组的地址,即&scores[0]

调用后相当于int (*pstu)[4]=scores,所以在getPosPerson中pstu与scores是等价的

即pstu可看作&scores[0],那么pstu+pos也就等价于scores+pos,等价于&scores[pos]

即返回了指向&scores[pos](也就是scores第pos+1行的地址)的指针

返回该行指针ppos 后,就可以查看该行表示的学生的4科成绩了

int (*p2)[5] = &temp这是一个指针数组;第一个元素存储的是数组temp的首地址;

*p2等价于&temp; **p2等价于temp数组的第一个元素的值1;

*(*p2+i)等价于*(&temp+i),等价于temp[i]

可以

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

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

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

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

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