C语言数组指针?

Python016

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科成绩了

(*k)[3]意为指向包含三个整形元素的一位数组;

*k[3]意为一个数组,数组的每个元素都是一个指针

以下为实例:

#include <stdio.h>

#include <conio.h>

void main(void)

{

int (*p)[3]

int a[2][3]={1,2,3,4,5,6}

p=a

//假设我们想输出第二行,第三个

printf("%d",*(*(p+1)+2))

getch()

}

#include <stdio.h>

#include <conio.h>

void main(void)

{

int *p[3]

int a=0,b=1,c=2

p[0]=&a

p[1]=&b

p[2]=&c

printf("%d,%d,%d",*p[0],*p[1],*p[2])

//输出结果为 0,1,2

}

不懂再问