原帖发在GISDN.NET:http://www.gisdn.net/thread-4717-1-1.html
c语言中关于指针的一些乱七八糟的代码 VC6中直接编译运行!
#include<stdio.h>
void MyFunc(int);
void MyFunc1(int);
void MyFunc2(int);
void MyFunc3(int);
void (*Funcp)(int);
typedef void (*FuncType)(int);
void CallMyFunc(FuncType fp,int x);
void Exchg1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
printf("x=%d,y=%d\n",x,y);
}
void find1(char array[],char search,char *pa)
{
int i;
for(i=0;*(array+i)!=0;i++)
{
if(*(array+i)==search)
{
pa=array+i;
break;
}
else if(*(array+i)==0)
{
pa=0;
break;
}
}
}
void find2(char array[],char search,char **ppa)
{
int i;
for(i=0;*(array+i)!=0;i++)
{
if(*(array+i)==search)
{
*ppa=array+i;
break;
}
else if(*(array+i)==0)
{
*ppa=0;
break;
}
}
}
void Exchg2(int *px,int *py)
{
int temp=*px;
*px=*py;
*py=temp;
printf("*px=%d,*py=%d\n",*px,*py);
}
main()
{
int *const b={3,3,4,5,6,6,2,3,23,3};
//int i,a[]={3,3,4,5,6,6,2,3,23,3};
//int const * pa=a;
//for(int j=0;j<=9;j++)
//{
//printf("%d\n",*pa);
//pa++;
//}
int a=4,b=6;
Exchg1(a,b);
printf("a=%d,b=%d\n",a,b);
Exchg2(&a,&b);
printf("a=%d,b=%d\n",a,b);
char str[]={"asdfasdfashdifshd\0"};
char c='d';
char *p=0;
find1(str,c,p);
if(0==p)
{
printf("没找到!\n");
}
else
{
printf("找到了,p=%d\n",p);
}
find2(str,c,&p);
if(0==p)
{
printf("没找到!\n");
}
else
{
printf("找到了,p=%d\n",p);
}
MyFunc(10); //直接调用
Funcp=MyFunc;//通过指针调用
(*Funcp)(20);
//(Funcp)(30);
Funcp=&MyFunc;
(MyFunc)(40);
(*MyFunc)(50);
(&MyFunc)(60);
CallMyFunc(MyFunc1,100);
CallMyFunc(MyFunc2,200);
CallMyFunc(MyFunc3,300);
return(0);
}
void CallMyFunc(FuncType fp,int x)
{
fp(x);
}
void MyFunc(int x)
{
printf("x=%d\n",x);
}
void MyFunc1(int x)
{
printf("Fun1 Value=%d\n",x);
}
void MyFunc2(int x)
{
printf("Fun2 Value=%d\n",x);
}
void MyFunc3(int x)
{
printf("Fun3 Value=%d\n",x);
}