C语言指针详解----函数参数与指针
来源:互联网 发布:windows home basic 编辑:程序博客网 时间:2024/06/05 15:45
灵活的使用指针可以让函数传参更加方便,首先讲一下值传递的问题。
在C语言的函数中,存在形参和实参两种参数。形参即形式参数,是在函数声明或者实现时使用的参数;而实参,即实际参数,是在函数调用的时候使用的参数。下面举个例子说明:
void fun(int x,int y){//x、y为形参 x = y; y = y + 1;}int a = 2;int b = 3;fun(a,b);//a、b为实参
在上述的情况下,运行fun(3,2)后,a、b的值均不会发生任何的变化,这是因为函数只对形式参数进行了操作,相当于走了一个过场,如果想要使函数运行后,a、b的值发生改变怎么做呢?这时候可以使用指针,举个例子:
void change(int *x,int *y){*x = *y;*y = *y + 1;}int main() {int a = 3;int b = 2;printf("%d\n%d\n", a,b);change(&a,&b);printf("%d\n%d\n", a,b);system("pause");return 0;}这段代码运行的结果为 3 2 2 3,发现函数对传入参数的值进行了操作;上述代码是对C语言来说的,对于C++可以使用引用来实现相同的操作,举个例子:
void change(int &x,int &y){x = y;y = y + 1;}int main() {int a = 3;int b = 2;printf("%d\n%d\n", a,b);change(a,b);printf("%d\n%d\n", a,b);system("pause");return 0;}
这段代码的运行结果一样为 3 2 2 3。
对于结构体来说,由于存在大量对指针的操作,因此很多时候函数的参数为指针。下面举个例子:
typedef struct LNode {int data;struct LNode *next;}LNode,*LinkList;LNode *GetElem(LinkList L,int i) {int j = 1;LNode *p = L->next;if (i == 0) {return L;}if (i < 1) {return NULL;}while (p&&j<i) {p = p->next;j++;}return p;}LinkList CreatList(LinkList &L) {//头插法创立链表LNode *s;int x = 0;L = (LinkList)malloc(sizeof(LNode));L->next = NULL;while (x < 10) {s = (LNode*)malloc(sizeof(LNode));s->data = x;s->next = L->next;L->next = s;x++;}return L;}int main() {int i = 5;LNode *r;LinkList L;CreatList(L);r = GetElem(L, i);printf("%d\n",r->data);system("pause");return 0;}上述代码运行结果为5(因为采用的是头插法),即找到所创建链表中的第5个元素对于函数 LNode *GetElem(LinkList L,int i),函数名前面的*表示该函数的返回值是一个指针类型。对于函数LinkList CreatList(LinkList &L),传入的参数为链表的首地址。
阅读全文
0 0
- C语言指针详解----函数参数与指针
- C语言函数指针与指针函数
- C语言,函数指针与指针函数
- 【C语言】指针函数与函数指针
- C语言函数指针详解
- C语言指针详解-----数组与指针
- C语言指针-----指针与函数
- 【双十一献礼】c语言数组、指针、与函数参数
- c语言函数与指针
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- C语言函数名与函数指针详解
- java线程的中断机制
- 【算法】斐波那契数列
- bzoj1066: [SCOI2007]蜥蜴(网络流)
- spring事务增强,事务回滚如何判断?希望在前端上有个提示。
- Android remote service
- C语言指针详解----函数参数与指针
- linux下的makefile编程
- 如何看待最低工资法
- C++ 类的const成员函数
- 四大组件--Service
- Hadoop显示调试信息以及关闭
- js策略模式
- 在Django中使用memcached缓存
- linux下qemu调试linux内核