189 8069 5689

c语言用数组声明函数指针 c语言指针指向数组写法

C语言指向 字符串数组 的指针 的声明方式

#include stdio.h

创新互联建站主要从事成都网站制作、网站设计、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务维西,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

int main(void)

{

char * test[] = {"1111", "2222", "3333"};

char * p[][3] = {{"1111", "2222", "3333"}};

puts(p[0][0]);

return 0;

}

//注意char * (*p)[] = 。。。 并不是声明数组,声明数组的方式是char * p[][3] = {{},{},{}...};

//char * (*p)[]只是声明变量,常用作函数的声明中作为形参来使用。

C语言如何声明一个返回函数指针的函数?

C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根据指向函数的指针的书写语法,下面的代码就是一个返回函数指针的函数:

int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值

return fun;//fun是个函数名,必须具备一个int形参、返回int值的要求

}

以下代码可以验证上述函数的正确性:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

int fun(int n){

printf("abcdef\n");

return n;

}

int (*f(void))(int){

return fun;

}

int main(void){

printf("%d\n",f()(100));//调用函数f,通过f返回的指针用100调用函数fun

return 0;

}

输出是:

abcdef

100

c语言 指向数组的函数指针是怎么调用的啊,就是在main里面怎么写

你说的“指向数组的函数指针”,是指 指针指向数组,数组是由函数指针构成,是不是这样?

C语言中的函数指针

函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。

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

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

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

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

注2:函数括号中的形参可有可无,视情况而定。

下面的程序说明了函数指针调用函数的方法:

例一、

#includestdio.h

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

void 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);

}

ptr是指向函数的指针变量,所以可把函数max()赋给ptr作为ptr的值,即把max()的入口地址赋给ptr,以后就可以用ptr来调用该函数,实际上ptr和max都指向同一个入口地址,不同就是ptr是一个指针变量,不像函数名称那样是死的,它可以指向任何函数,就看你想怎么做了。在程序中把哪个函数的地址赋给它,它就指向哪个函数。而后用指针变量调用它,因此可以先后指向不同的函数。不过注意,指向函数的指针变量没有++和--运算,用时要小心。

指针函数是指返回值是指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。

其定义格式如下所示:

返回类型标识符*返回名称(形式参数表)

{ 函数体}

返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。

其实还是指针,只是指向的内容和声明方法不同而已

如何在c语言二维数组中使用指针

程序中有些问题:

1、函数的定义有错误(参数格式不对);

2、程序中没有调用函数(或者说是调用格式有误)

3、函数中的处理逻辑需要修改(一步一步来,这样容易处理和理解)。

你定义的函数是使用数组作为参数的,数组名本身就是个地址(相当于指针)。

下面在手机上用易历知食软件里的微C程序设计来演示修正后的代码并运行程序,供参考。

手机上修正后的代码如下图:

手机上运行的效果如下图所示:

c语言数组 指针 函数

#includestdio.h

int n=0;

int main()

{

void max(*p);

int i;

int xuehao[40];

int chengji[40];

scanf("%d",n);

for(i=0;in;i++){

printf(" 请依次输入学生的学号、成绩 ");

scanf("%s %d",xuehao[i],chengji[i]);}

max(chengji[],*xuehao);

}

void max(*a,b[])

{

int t,i;

for(i=0;in;i++)

if(a[i]a[t])

t=i;

print("最高分 %d,他的学号 %d",a[t],*(b+t));

}


网站栏目:c语言用数组声明函数指针 c语言指针指向数组写法
文章源于:http://cdxtjz.cn/article/hgjdes.html

其他资讯