关于指针的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);
}
麻烦各位帮忙看下,这程序错在哪里了,解释下,顺便帮忙改下,谢了
{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("%