关于指针的C语言程序改错

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:12:21
void swap(int *p,int*q)

{int t;

t=*p;*p=*q; *q=t;

}
main()

{int *a,*b;

*a=20,*b=20;

swap(a,b);

printf("%d%d\n",*a,*b);

}
麻烦各位帮忙看下,这程序错在哪里了,解释下,顺便帮忙改下,谢了

a,b只是声明为指针,未为让它们指向合法的内存空间,所以这时候对*a,*b的赋值操作是非法的.
应该是
void swap(int *p,int*q)

{int t;

t=*p;*p=*q; *q=t;

}
main()

{int a,b;

a=10,b=20;

swap(&a,&b);

printf("%d%d\n",a,b);

}

a和b是指针变量,但是没有初始化就使用了。
也就是说,一开始a和b是没有指向什么东西的,地址值未知,怎么能够对其内容赋值呢,赋的值放哪里呢。

void swap(int *p,int*q)

{int t;

t=*p;*p=*q; *q=t;

}
main()

{int a,b;

a=20,b=20;

swap(&a,&b);

printf("%d%d\n",a,b);

}

指针都没分配空间

指针没申请内存空间

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

void swap(int *p,int*q)
{
int t;
t=*p;*p=*q; *q=t;
}
main()
{
int *a,*b;
a=(int *)malloc(sizeof(int));
b=(int *)malloc(sizeof(int));
*a=20,*b=30;
swap(a,b);
printf("%