c语言作业

#include<stdio.h>
#include<conio.h>
void swap(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
 }
 main()
 {
 void swap(int *a,int *b);
    int m,n;
    scanf("%d,%d",&m,&n);
    int *p1;
    int *p2;
    p1=&m;
    p2=&n;
    swap(p1,p2);
    printf("%d,%d",m,n);
    getch();}

运行结果:

3,4
4,3
--------------------------------
Process exited after 3.482 seconds with return value 0
请按任意键继续. . .

void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换:

#include<stdio.h>
#include<conio.h>
void swap(int *a,int *b)
{
    int *t;
    *t=*a;
    *a=*b;
    *b=*t;
 }
 main()
 {
 void swap(int *a,int *b);
    int m,n;
    scanf("%d,%d",&m,&n);
    int *p1;
    int *p2;
    p1=&m;
    p2=&n;
    swap(p1,p2);
    printf("%d,%d",m,n);
    getch();}

运行结果:

程序停止工作

原因:在程序中*m没有被初始化,形成野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。

void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换:

#include<stdio.h>
#include<conio.h>
void swap(int *a,int *b)
{
    int t;
    t=a;
    a=b;
    b=t;
 }
 main()
 {
 void swap(int *a,int *b);
    int m,n;
    scanf("%d,%d",&m,&n);
    int *p1;
    int *p2;
    p1=&m;
    p2=&n;
    swap(p1,p2);
    printf("%d,%d",m,n);
    getch();}

运行结果:

3,4
3,4
--------------------------------
Process exited after 2.839 seconds with return value 0
请按任意键继续. . .

原因:因为在swap中被传输的是形参变量指针的值,并不是指针内存储的实参变量的地址,而形参指针变量的值改变不能使实参指针变量的值发生改变,所以无法进行交换

#include<stdio.h>
#include<conio.h>
void comp(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
 }
 main()
 {
 void comp(int *a,int *b);
    int m,n;
    scanf("%d,%d",&m,&n);
    int *p1;
    int *p2;
    p1=&m;
    p2=&n;
    if(m<n)
    {
    comp(p1,p2);
    }
    printf("%d\n",m);
    getch();
    }

运行结果:

7,2
7

--------------------------------
Process exited after 3.384 seconds with return value 0
请按任意键继续. . .

总结:c语言中,形参指针变量的值改变不能使实参指针变量的值发生改变,需要对指针内存储的实参地址进行交换,实参内存储的数据才会进行交换。

一个没有指向对象的指针被称为野指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,对野指针进行操作很容易造成程序错误。

在编写程序时,应当认真严谨,才能减少出错,当程序发生错误时,通过devc++下方的编译器了解具体出错位置,进行修改,不马虎,同时在日常生活中多写多练,熟能生巧。
 

posted on 2017-03-22 17:18  郭欣宇  阅读(327)  评论(0编辑  收藏  举报