C语言通过函数指针来调用函数的两种写法

#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
#include<stdlib.h>

int* func(){
    
    
	static int n[10];
	int *p;
	p=n;
	for(int i=0;i<10;i++){
    
    
		*p=rand();
		p++;
	}
	return n;
}

int main(int argc, char* argv[])
{
    
    
	int* (*p)()=func;
	int* arr;
	arr = (*p)();

	for(int i=0;i<10;i++){
    
    
		printf("%d\n",*arr);
		arr++;
	}
	return 0;
}

上面的代码也可以这么写


#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
#include<stdlib.h>

int* func(){
    
    
	static int n[10];
	int *p;
	p=n;
	for(int i=0;i<10;i++){
    
    
		*p=rand();
		p++;
	}
	return n;
}

int main(int argc, char* argv[])
{
    
    
	int* (*p)()=func;
	int* arr;
	arr = p();

	for(int i=0;i<10;i++){
    
    
		printf("%d\n",*arr);
		arr++;
	}
	return 0;
}


输出的结果都一样

41
18467
6334
26500
19169
15724
11478
29358
26962
24464

猜你喜欢

转载自blog.csdn.net/chendongpu/article/details/121469877