剑锋@2008 发表于 2014-8-4 09:23:29

一个有关函数指针的问题,急求大神指教

#include<stdio.h>

void main()
{
        void swam(int*ptr1,int*ptr2);
       
        int a,b;
        printf("Please input two numbers!\n");
        scanf("%d %d",&a,&b);
        swam(&a,&b);
        printf("a=%d,b=%d\n",a,b);
}
void swam(int*ptr1,int*ptr2)
{
        int *ptr;
        *ptr=*ptr1;
        *ptr1=*ptr2;
        *ptr2=*ptr;
        printf("*ptr1=%d,*ptr2=%d\n",*ptr1,*ptr2);
}编译无错误,为什么运行时会出问题??????

剑锋@2008 发表于 2014-8-4 09:50:55

我明白了,是应为指针没有初始化。

xiawb 发表于 2014-8-4 10:57:33

#include<stdio.h>

void main()
{
      void swam(int*ptr1,int*ptr2);
      
      int a,b;
      printf("Please input two numbers!\n");
      scanf("%d %d",&a,&b);
      swam(&a,&b);
      printf("a=%d,b=%d\n",a,b);
}
void swam(int*ptr1,int*ptr2)
{
      int k;
      k=*ptr1;
      *ptr1=*ptr2;
      *ptr2=k;
      printf("*ptr1=%d,*ptr2=%d\n",*ptr1,*ptr2);
}

剑锋@2008 发表于 2014-8-4 22:30:46

void main()
{
      void swam(int*ptr1,int*ptr2);
      
      int a,b;
      printf("Please input two numbers!\n");
      scanf("%d %d",&a,&b);
      swam(&a,&b);
      printf("a=%d,b=%d\n",a,b);
}
void swam(int*ptr1,int*ptr2)
{
      int k,*ptr;
       ptr=&k;
      *ptr=*ptr1;
      *ptr1=*ptr2;
      *ptr2=k;
      printf("*ptr1=%d,*ptr2=%d\n",*ptr1,*ptr2);
}
利用指针这样也可以。
页: [1]
查看完整版本: 一个有关函数指针的问题,急求大神指教