c语言函数数组指针 c语言函数数组指针结构体共用体概念

C语言数组指针?

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

请问在C语言中,函数传参时怎样利用指针传递数组

数组名就是指针,例如:

#include stdio.h

void pr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

扩展资料:

注意事项

非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。

c语言 函数返回数组指针?

由于你在子函数int *shuzu(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include stdio.h下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,百度一下就会了~~~

C语言 怎么调用指针数组函数

1.函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表)。

例如:

double add(double a,double b){};

double sub(double a,double b){};

double mul(double a,double b){};

double div1(double a,double b){};

double (*oper_func[])(double, double) = {add,sub,mul,div1};//函数指针的数组定义

2.函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。

3.函数指针的声明方法为:

返回值类型( * 指针变量名) (形参列表);

“返回值类型”说明函数的返回类型,“( * 指针变量名)”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

f = func; /* 将func函数的首地址赋给指针f */

或者使用下面的方法将函数地址赋给函数指针:

f = func;

赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

例子:

#includestdio.h

int max(int x,int y){return (xy? x:y);}

int main(){

int (*ptr)(int, int);

int a, b, c;

ptr = max;

scanf("%d%d", a, b);

c = (*ptr)(a,b);

printf("a=%d, b=%d, max=%d", a, b, c);

return 0;

}


当前标题:c语言函数数组指针 c语言函数数组指针结构体共用体概念
地址分享:http://ybzwz.com/article/ddseido.html