c 指针数组&函数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int (*funptr)(int);
typedef int (*operation)(int,int);

typedef int (*fptrOperation)(int,int);


operation operations[128]={NULL};


int add(int num1,int num2)
{
	return num1+num2;
}

int substract(int num1,int num2)
{
	return num1-num2;
}



void initializeOperationsArray()
{
	operations['+'] = add;
	operations['-'] = substract;
}


int evaluateArray(char opcode,int num1, int num2)
{
	operation	operation;
	operation  = operations[opcode];
	return operation(num1,num2);
}




int sequare(int num)
{
	return num*num;
}



int main()
{
	int n=5;
	int result=0;
	char a='a';
	funptr fptr;
	int*  arr[5]={NULL}; 

	fptr =  sequare;
	result = fptr(n);
	printf("%d\r\n",a);
	printf("%d\r\n", result);


	initializeOperationsArray();

	printf("%d\r\n",evaluateArray('+',5,6));
	printf("%d\r\n",evaluateArray('-',5,6));


	for(int i=0;i<5 ;i++)
	{
		arr[i]= (int*)malloc(sizeof(int));
		*arr[i]=i;
	}


	for(int i=0;i<5;i++)
	{
		printf("%d : %d\r\n",arr[i],*arr[i]);
		free(arr[i]);
	}



	for(int i=0;i<5;i++)
	{
		*(arr+i) = (int*)malloc(sizeof(int));
		**(arr+i) = i;
	}


	for(int i=0;i<5;i++)
	{
		printf("%d  : %d : %d \r\n",(arr+i),*(arr+i),**(arr+i));
		free(*(arr+i));
	}


	return 0;
}

猜你喜欢

转载自my.oschina.net/u/1579560/blog/1817021