自学C语言也有一段时间了,是该给自己做个总结了!
这几天总是忘了或者说是混淆了指针的概念和指针的应用!
简单的代码最能说明问题!
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int main(void)
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a<b)
swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);/*p1和p2还是和a,b保持原来的指向关系,只是a,b的值变了!*/
return 0;
}
/*swap函数其实是让*p1,*p2的值互换,也就是让a和b的互换*/
/*
#include <stdio.h>
int main(void)
{
int *pointer=NULL,i;
i=2;
pointer=&i;
printf("%d %d\n",*pointer,i);
i=3;
printf("%d %d\n",*pointer,i);
return 0;
}
运行结果是2 2 3 3说明可以改变指针指向的变量的值!*/
这段话来自于我才买的一本《C大学教程》第5版!
“在c语言中,可以使用指针和间接寻址运算符(*)来模拟按引用调用。当需要修改函数调用语句中的实参时,就必须将这个实参的地址传递给函数。“
我在思考,什么是”模拟引用调用“,就是说C语言向函数传递实参都是按值调用?C++中才有真正的按引用调用?
可以这样理解不?