精华内容
下载资源
问答
  • 用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递 需要传递一组数据,只传首地址运行效率比较高 实参是数组名时形参可以是指针 指针函数即返回值是使地址...

    为什么需要用指针做参数?

    1. 需要数据双向传递时(引用也可以达到此效果)
      用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递
    2. 需要传递一组数据,只传首地址运行效率比较高
      实参是数组名时形参可以是指针

    指针函数即返回值是使地址的函数
    注意

    • 不要将非静态局部地址用作函数的返回值
      错误的例子:在子函数中定义局部变量后将其地址返回给主函数,就是非法地址
      返回的指针要确保在主调函数中是有效、合法的地址
      正确的例子:
      主函数中定义的数组,在子函数中对该数组元素进行某种操作后,返回其中一个元素的地址,这就是合法有效的地址

    • 返回的指针要确保在主调函数中是有效、合法的地址
      正确的例子:
      在子函数中通过动态内存分配new操作取得的内存地址返回给主函数是合法有效的,但是内存分配和释放不在同一级别,要注意不能忘记释放,避免内存泄漏

    展开全文
  • 需要数据双向传递时(引用也可以达到此效果)用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递。(实际上传指针也是引用传递的一种,将主调函数中已经定义好...

    以指针作为函数参数[1]

    为什么需要用指针做参数?

    • 需要数据双向传递时(引用也可以达到此效果)
    1. 用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递。(实际上传指针也是引用传递的一种,将主调函数中已经定义好的变量地址放在指针里面传给被调函数,这样在被调用的函数体中,可以通过传过来的指针
      直接操作主调函数中的数据,这样就实现了数据的双向传递)
    • 需要传递一组数据,只传首地址运行效率比较高
    1. 实参是数组名时形参可以是指针

    例6-10 读入三个浮点数,将整数部分和小数部分分别输出

    #include <iostream>
    using namespace std;
    void splitFloat(float x, int *intPart, float *fracPart) {
       *intPart = static_cast<int>(x); //取x的整数部分
       *fracPart = x - *intPart; //取x的小数部分
    }
    int main() {
      cout << "Enter 3 float point numbers:" << endl;
      for(int i = 0; i < 3; i++) {
        float x, f;
        int n;
        cin >> x;
        splitFloat(x, &n, &f);	//变量地址作为实参
        cout << "Integer Part = " << n << " Fraction Part = " << f << endl;
      }
      return 0;
    }
    

    43431eddf7943be74a1bc6d10628d7c5.png
    记住浮点数在机器内部是近似存储的,千万不要在程序中去比较两个浮点数是否相等,理论上应该是相等的,但实际上在计算机内部它可能就差这么点。
    所以如果要比较两个浮点数是否相等,可以采用让它们两个相减,如果相减的差充分小(比如小于10的负多少次方)满足精度要求就认为它们相等。

    参考

    1. ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/d4eb7d174ba04a4da6282bcae197892c/b7924d7fabf8450bbe97639cb4255213/
    展开全文
  • 指针作为函数参数主讲人张静 函数的参数不仅可以是整型实型字符型等数据还可以是指针类型它的作用是将一个地址值传递给被调函数中的形参指针变量即在函数调用时确定形参指针的指向指针作为函数参数pointer_1ap2p1&b&...
  • 函数指针的正常使用 //1 函数指针的正常使用 void test1() { printf("world\n"); } void main() { ...//call 函数,其实本质就是通过test1这个函数的起始地址进入test1... //所以可以用指针进行指向 //那么指针的概念

    函数指针的正常使用

    //1 函数指针的正常使用
    void test1()
    {
    	printf("world\n");
    }
    void main()
    {
    	test1();//call 函数,其实本质就是通过test1这个函数的起始地址进入test1函数里面的代码
    	//执行这些代码,但是因为test1这个函数的代码本身就存储在代码区的一个内存块,
    	//所以可以用指针进行指向
    	//那么指针的概念其实是有两个部分组成,一个是* 表示存储的内存块起始地址
    	//第二个概念,是这个存储的地址指向的源头是什么类型的,如果是int类型的,
    	//则存储4个字节,如果是char类型的,则存储1个字节
    	//那么函数指针,也是分为两个部分组成
    	void (* pTest1) ()  ;//这个就是c语言固定的定义方式,区分于所有的其它种类的指针,比如:int * pTest1
    	pTest1=test1;//为什么函数能赋给一个变量?因为函数本身就有数据类型
    	pTest1();
    
    }

    函数指针作为函数参数使用


    #include<stdio.h>
    
    //1 函数指针作为函数参数使用
    void test1(char * i)
    {
    	printf("%s\n",i);
    }
    void test2(char* i)
    {
    	printf("test2\n");
    }
    void test( void (* pTest1) (char*) )
    {
    	pTest1("world");//等于调用函数
    }
    void main()
    {
    	//1 固定赋值
    //	test(test1); //test1 理解为一个函数常量
    //	test(test2);
    	//2 定义变量来赋值
    	void(* pTest1)()=test1;
    	test(pTest1);
    	pTest1=test2;
    	test(pTest1);
    
    
    }


    函数指针作为函数参数使用

    #include<stdio.h>
    
    typedef void (* PTEST1 ) (char*);  //处理方案是把pTest1放入()内部
    //函数指针定义的数据类型看起来非常的别扭,因为把类型放入了()内部
    void test1(char * i)
    {
    	printf("%s\n",i);
    }
    PTEST1 test(  )
    {
    	return test1;
    }
    void main()
    {
    	test()("hello\n");
    }



    展开全文
  • 结构体指针作为函数参数,妥妥可以修改实参!
    用结构体指针作为函数参数 - 光 - 一只半路出家的程序猿
     
    用结构体指针作为函数参数 - 光 - 一只半路出家的程序猿

    用结构体指针作为函数参数,妥妥的可以修改实参!
     
    展开全文
  • 用指针作为函数参数

    2016-05-04 16:44:24
    如果以指针作为形参,在调用时实参将值传递给形参,也就是使实参和形参指针变量指向同一个内存地址。这样在子函数运行过程中,通过形参指针对数据值改变也同样影响着实参指针所指向数据值。 #include using ...
  • 指针作为函数参数

    2015-09-16 09:30:57
    什么时候需要用指针做参数 1、需要数据双向传递时(引用也可以达到此效果) 2、需要传递一组数据,只传首...用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递。
  • //指向函数的指针实现结构化编程 #include<stdio.h> int main(){ int max(int,int); int min(int,int); int add(int,int); void process (int,int,int(*p) (int,int)); int a,b; scanf("%d,%d",&a...
  • 以下是对C++中用指针变量作为函数的参数接受数组的值的问题进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
  • //指向函数的指针作为函数的参数 //有两个整数a,b,让用户输入1,2或者3,当输入1时,给出相对大值,当输入2时,给出相对小值,当输入3时,给出两者之和 //1.可以switch函数来实现(代码比较繁琐) int main() { ...
  • 指针作为参数的实际意义中,最重要定的是可以实现多个“返回值”通过指针作为函数的传出参数可以实现函数的多值返回例如求阶乘的例子:#includeint Factorial(int input1) //计算传入参数input的阶乘{ int result ...
  • 用指针作为函数返回值时需要注意一点是,函数运行结束后会销毁在它内部定义所有局部数据,包括局部变量、局部数组和形式参数,函数返回指针请尽量不要指向这些数据,C语言没有任何机制来保证这些数据会一直...
  • C++指向函数的指针作为函数参数

    千次阅读 2018-12-05 19:42:12
    示例: #include &lt;iostream&gt; using namespace std; int add(int x, int y){ return x + y; } int sub(int x, int y){ ...int operation(int x, int y, int(*function)(int, int)){ return func...
  • 今天读到林悦一句话:如果函数是一个指针则不要指望使用该指针申请动态内存,找了几个例子方便理解: void GetMemory1( char *p ) { p = (char *) malloc( 100 ); } void Test( void ) { char *...
  • 在C语言中,函数指针变量常见的用途之一是作为函数的参数,将函数名传给其他函数的形参。这样就可以在调用一个函数的过程中根据给定的不同实参调用不同的函数。 例如,利用这种方法可以编写一个求定积分的通用函数,...
  • 代码如下: //有一个班,三个学生,各学四门课,计算总平均分数和第n个学生成绩 #include #include #include int main() { float average(float *p,int n); void search(float (*p)[4],int n); float score[3][4]...
  • 在C语言中,函数的参数不仅可以是整数、小数、字符等具体的数据,还可以是指向它们的指针。用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着...
  • 1,函数的参数是一个指针时,不要在函数体内部改变指针所指的地址,那样毫无作用,需要修改的只能是指针所指向的内容。即应当把指针当作常量。 2,不要return语句返回指向“栈内存”的指针,因为该内存在函数结束...
  • c++ 用指针函数作为参数传参

    千次阅读 2018-05-16 14:38:05
    1.问题提出:当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &amp;strFileName,...)与 DateType ...通俗的讲:形参是形式上的参数,实参是实际的参...
  • 用指针作为函数参数,交换两个变量值。 #include <stdio.h> /* 形参为指针 */ //begin //end int main( ) { int a, b, *p, *q; scanf("%d%d", &a, &b); /* 输入变量a、b值 */ p = &a;...
  • 练习03-18-02 //有两个整数a,b,由用户输入1,2,3.如输入1,程序给出最大值;输入2,给出最小值;输入3,给出和 输出样例: Input two integer numbers: ...Process exited after 36.42 seconds with return
  • 回答:C语言中,值进行函数的参数传递时,在函数中,用作实际参数的变量无法被函数改变。因此使用指向变量的指针作为参数,允许函数既可以读取变量,也可以修改变量。具体参考这篇文章《scanf 中 & 的应用本质...
  • C语言程序设计 第10章 指针 第4讲指针作为函数... 指向变量的指针作为函数的参数 C语言程序设计 定义一个函数用指针对两个数进行交换 函数原型格式 函数类型 函数名称指针变量列表 运行结果 语句编写 void exchange(int
  • 学了C C++老久了,有些基本用法必须注意,强化在心中...比如数组作为函数参数& 指针作为函数参数的问题,今天加深了一下!【例】写一个函数max_min(),作用:从一个数组a[N],从a[N]中找出最大值和最小值:void max_
  • 函数指针作为函数参数

    千次阅读 2015-10-14 09:32:43
    先来看看普通的指针 如果有 int a 那么可以定义一个 int *p = &a ...同理,如果要定义一个指向函数的指针,那么也只要把函数名做类似的处理即可 如定义一个函数 void MyFun(int x) 那么只要定义 v
  • 一个问题是,我们想一个函数来对函数变量v进行操作,比如,我想在函数里稍微改变一下这个变量v值,我们应该怎么做呢?又或者一个常见例子,我想利用swap()函数交换两个变量a,b值,我们应该怎么做呢(好...
  • 一、结构指针变量做函数的参数/*用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,从而减少了时间和空间的开销。*//*计算一组学生的平均成绩和不及格的人数,用结构指针变量作函数参数编程。*/#include...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,422
精华内容 968
关键字:

用指针作为函数的参数