c语言指向函数编译,C语言指向函数的指针

C语言指向函数的指针

int d=e;

铁力网站建设公司创新互联,铁力网站设计制作,有大型网站制作公司丰富经验。已为铁力上千提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的铁力做网站的公司定做!

这个就不对,改成d=e

还有,int e(int, int )

{

return a+b;

}

这个函数改成int e(int a, int b)

{

return a+b;

}

c语言中的函数可不可以单独进行编译?

可以的。

例如库函数就是把函数放到库里,把一些常用到的函数编译完放到一个文件里,供不同的人进行调用。C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。

windows中静态编译将导出声明和实现都放在lib中。动态LIB文件相当于一个C语言中的h文件,是函数导出部分的声明,而不将实现过程嵌入到程序本身中,编译后只是将函数地址存在宿主程序中,运行到调用函数是调用DLL并载入函数来实现函数的具体操作。

因此,c语言中的函数是可以单独进行编译并导出的。

扩展资料:

单独编译的相关方式及文件:

1、lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。

2、静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。

参考资料来源:百度百科-库函数

参考资料来源:百度百科-lib文件

C语言指针题目+编译函数

#include"stdio.h"

void jz(int *pointer);

int main()

{

int i,j,*p,a[3][3];

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

{

for(j=0; j3; j++)

scanf("%d",a[i][j]);

}

p=a[0][0];

jz(p);

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

{

for(j=0; j3; j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

}

void jz (int *pointer)

{

int i,j,k;

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

{

for(j=i; j3; j++)

{

k=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=k;

}

}

}

以上代码已更改可以编译通过,运行结果:

C语言——指向函数的指针

c语言中叫做回调函数,将函数指针(如max)作为函数的参数,函数(如fun)中调用这个参数指向的函数,

调用函数(fun)时看情况而给函数传入不同的函数指针

例如fun(a,b,min),那么fun函数调用执行三个参数就调用min函数

参数的定义要与传入的函数指针相匹配

例如fun(int,x,int y,(*p)(int,int)) 那么调用fun(a,b,min)时,min的参数必须是(int ,int)

c语言:关于指向函数的指针编程

#include stdio.h

#include stdlib.h

#include string.h

void virtualFun(int choice, int n, char *str[], char *(*p)(int , char **));

char *maxs(int n, char *s[]);  //此函数通过指向函数的指针调用

char *mins(int n, char *s[]);  //此函数通过指向函数的指针调用

char *minc(int n,char *s[]);   //此函数通过指向函数的指针调用

void Menu();

char *(*func)(int n, char **);

int main() {

char *name[]={"FOLLOW ME","BASIC","GREAT WALL ","FORTRAN","COMPUTER DESIGN"};

int n=5;

char ch=0;

while (ch!=4) {

Menu();

ch = getchar();

getchar();//ignore '\n'

ch = ch - '0';

virtualFun(ch, n, name, func);

}

return 0;

}

void virtualFun(int choice, int n, char *str[], char *(*p)(int n, char **name)) {

switch(choice) {

case 1: //max string

p = maxs;

break;

case 2:

p = mins;

break;

case 3:

p = minc;

printf("[result is :%c]\n", *p(n, str)); //because the return is a char

default:

return;

}

printf("[result is :%s]\n", p(n, str));

}

char *maxs(int n, char *s[]) {

int i;

char *max = s[0];

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

if (strcmp(max, s[i])0)

max = s[i];

}

return max;

}

char *mins(int n, char *s[]) {

int i;

char *min = s[0];

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

if (strcmp(min, s[i])0)

min = s[i];

}

return min;

}

char *minc(int n, char *s[]) {

int i;

char ch = s[0][0], *p, *r=s[0];

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

p = s[i];

while(*p++) {

if (*p0x20  ch*p) {

ch = *p;

r = p;

}

}

}

return r;

}

void Menu() {

char menu[] = "1  max string\n\

2  min string\n\

3  min char \n\

4  exit\n";

printf("%s", menu);

}

C语言指针函数的问题,编译通过,但是执行程序却被终止。

fun中的指针datas连指向都没有,却用datas-a = a;和datas-b = b;给这指针的目标成员a、b赋值!datas这时还是野指针,它哪儿有a和b?肯定会运行终止的……你这个代码很好改:把函数名前的*删除,让函数返回结构体变量;再把datas前的*删除,让它成为一个Data型变量;主函数中把myData前的*删除,让它也成为一个结构体变量,把主函数中的printf中的两个-改成两个.就可以了。希望对你有帮助。


网站栏目:c语言指向函数编译,C语言指向函数的指针
标题链接:http://pwwzsj.com/article/hdsdio.html