关于指针的使用
#include <stdio.h>int* swap(int *a,int *b)
{
int *i=(int*)malloc(sizeof(int));
*i=*a;
*a=*b;
*b=*i;
return (i);
}
main()
{
int a=2;
int b=3;
swap(&a,&b);
printf("%d %d",a,b);
system("pause");
}
是个简单的交换
如果把 int *i=(int*)malloc(sizeof(int)); 改成 int *i=0;
为什么不成?int *i=0;不为指针i分配空间吗?
----------------解决方案--------------------------------------------------------
不分配 只是让*i指向NULL
----------------解决方案--------------------------------------------------------
另外 指针占4字节 以后也不会分配空间
int *i=(int*)malloc(sizeof(int)); 只是分配一个空间把地址给i
----------------解决方案--------------------------------------------------------
函数交换了a和b 的值
函数不好,可以说错误,因为调用malloc() 后没有释放内存。
----------------解决方案--------------------------------------------------------
其实,很遗憾地告诉你,像LZ ” int* i=0; “ 这样用指针是很danger 的!
----------------解决方案--------------------------------------------------------
指针不是这样用的
----------------解决方案--------------------------------------------------------
要是真的想改变实参,就用引用吧...
----------------解决方案--------------------------------------------------------