c語言中關於指針的一些亂七八糟的代碼 VC6中直接編譯運行!
#include
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 ,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 ,*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 ,*pa);
//pa++;
//}
int a=4,b=6;
Exchg1(a,b);
printf(a=%d,b=%d ,a,b);
Exchg2(&a,&b);
printf(a=%d,b=%d ,a,b);
char str[]={asdfasdfashdifshd};
char c='d';
char *p=0;
find1(str,c,p);
if(0==p)
{
printf(沒找到! );
}
else
{
printf(找到了,p=%d ,p);
}
find2(str,c,&p);
if(0==p)
{
printf(沒找到! );
}
else
{
printf(找到了,p=%d ,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 ,x);
}
void MyFunc1(int x)
{
printf(Fun1 Value=%d ,x);
}
void MyFunc2(int x)
{
printf(Fun2 Value=%d ,x);
}
void MyFunc3(int x)
{
printf(Fun3 Value=%d ,x);
}