指针作为形参

如果指针作为形参,要注意是否希望这个指针作为返回值返回。

例如,在链表的插入函数中

void Insert(Node *head,Node *x);

当head == NULL时,我们希望令head = x,此时实际上只改变了head的副本,head并没有改变,

因此正确的函数原型应该是

void Insert(Node **head,Node *x);

当*head == NULL时,令*head = x;

指针作为形参

时间: 2024-10-12 06:54:14

指针作为形参的相关文章

指针做形参做局部变量以及内存分配

指针做形参做局部变量以及内存分配 一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同.指针传递的是一个变量或者一个值的地址,但是它本身还是采用值传递的方式.即你不能使它指向另外一块地址,但是你可以改变它指向的空间里存的值. 二级指针做形参:二级指针也是传值,但是他指向的地址是个一维指针,所以可以改变二维指针指向的地址空间里的内容也就是要申请空间的一维指针,不能改变二维指针本身的值,即不能让他指向一个新的一维指针.所以二维指针传递的是一个一维指针. 具体

关于【指针作为形参,改变实参的值】的理解!

0x01 先上代码: 1 #include <stdio.h> 2 3 void swap(int *p, int *q) 4 { 5 int temp; 6 temp = *p; 7 *p = *q; 8 *q = temp; 9 } 10 11 int main() 12 { 13 int a, b; 14 int *pa, *pb; 15 printf("Enter 2 numbers:\n"); 16 scanf("%d, %d", &a

二级指针的形参问题

草草嗒!下面的程序myMalloc是没有返回值的!害我想半天=.= 用一级指针同样可以实现程序2,但需要返回值. 总结:二级指针做形参时,操作的对象已经不是临时变量了:而一级指针操作的是临时变量. ====下面的已经没价值了=============================== 程序1:  void  myMalloc(char  *s)  //我想在函数中分配内存,再返回  {       s=(char  *)  malloc(100);  }   void  main()  {  

指针当形参

Problem : 指针当形参 Description 下面的程序将调用函数进行变量的交换,请设计出交换的函数 #include <iostream> using namespace std; void jiaohuan(int *p1, int *p2); int main( ) { int a,b; cin>>a>>b; jiaohuan(&a,&b); cout<<a<<" "<<b<&

【C语言】二维指针做形参

转自:http://hi.baidu.com/gpmzccqceabimqq/item/f499f057aa1520404eff208b 关键: 传入时强制类型转换 + 使用时自己手工寻址 今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不至于再在这上面浪费时间. 正文: 首先,我引用了谭浩强先生编著的<C程序设计>上面的一节原文,它简要介绍了如

C语言指针作为形参的一些问题

指针作为形参肯定有很多都不清楚其中具体的原理,我也是最近摸清了些门道: 下面就用一些例子来给大家说明: void myMalloc(char *s) //我想在函数中分配内存,再返回 { s=(char *) malloc(100); } void main() { char *p=NULL; myMalloc(p); //这里的p实际还是NULL,p的值没有改变,为什么? if(p)  <span style="font-family: Arial, Helvetica, sans-se

15周(oj指针当形参)

 /* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:15周(oj指针当形参) *作者:王忠 *完成日期:2014.12.04 *版本号:v1.0 * *问题描述:输入两个数,比较大小,并输出 *输入描述:随机两个数 *程序输出:排序后输出 #include <iostream> using namespace std; int main( ) { int *p1,*p2,t; p1=new int(100); p2=ne

指针作为形参和返回值的区别

关于指作为针形参与返回值的常见问题 1.返回栈中局部变量的地址 #include <stdio.h> int *fun(){ int a = 10; // a为当前方法栈中的局部变量,结束即释放 return &a; // 所以传递出去的会是一个无效(非法)地址 } int main(int argc, char const *argv[]) { int *a = NULL; a = fun(); *a = 100; // error,操作非法内存 printf("a = %

把指针作为形参,用于取值的用法。

指针作为函数的形参有两种用法:1.传值.2.取值.下面我们讨论下,使用指针取值的用法.指针之所以能够用来取值是作用域和生存周期的原因. (1)用一级指针取数值. int fun1(int* p) { *p = 3;// *p为整型变量,3为整数常量.如此两侧对等. } (2)用二级指针取一级地址值. int fun2(int** p) { int* pnew = (int*)malloc(sizeof(int)); *p = pnew;// *p是一级指针变量,pnew也是一级指针变量.如此两侧