精华内容
下载资源
问答
  • C++指针变量作函数参数接收数组地址 在C++中,用指针变量指向数组元素时要注意: 指针变量p可以指向有效的数组元素,实际上也可以指向数组 以后的内存单元。 int arrya[10];//指针变量p的初值为&array[0] *p=...

    C++指针变量作函数参数接收数组地址

    在C++中,用指针变量指向数组元素时要注意: 指针变量p可以指向有效的数组元素,实际上也可以指向数组 以后的内存单元。

    int arrya[10];//指针变量p的初值为&array[0]
    *p=array;
    cout<<*(p+10;//输出arry[10]的值
    

    在使用指针变量指向数组元素时,应切实保证指向 数组中有效的元素指向数组元素的指针的运算比较灵活。

    如果先使p指向数组array的首元素,则:

    p++,使p指向下一元素,即array[1],如果用*p,得到下一个元素array[1]的值。

    p++,由于++和同优先级,结合方向为自右而左,因此它等价于*(p++),作用是:先得到p指向的变量的值,然后再使p的值加1。

    for(p=a:p<a+10;p++)
    {
      cout<<*p;
    }
    

    //等同于

    for(p=a;p<a+10;)
    {
      cout<<*p++;
    }
    

    (p++)与(++p)作用不同,前者是先取* p值,然后使p加1,后者是先使p加1,再取* p,若p的初值为array,输出(p++)得到array[0]的值,而输出*(++p)则得到array[1]的值。

    (*p)++表示p所指向的元素值加1。

    如果p当前指向array[i],则 (p–)先对p进行运算,得到array[i],再使p减1,p指向array[i-1] 。

    *(++p)先使p自加1,再作*运算,得到array[i+1]*(--p)先使p自减1,再作*运算,得到array[i-1]

    在C++中,将+和–运算符用于指向数组元素的指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。

    在上一节小林已经讲过:数组名代表数组首元素的地址,用数组名作函数的参数,传递的是数组首元素的地址,同样用指针变量作函数形参, 也可以接收从实参传递来的数组首元素的地址。

    在C++实际中,函数调用时并不存在一个占有存储空间的形参数组,只有指针变量。

    实参与形参的结合,有以下几种形式:

    实参 形参
    数组名 数组名
    数组名 指针变量
    指针变量 数组名
    指针变量 指针变量
    

    实参数组名array代表一个固定的地址,或者说是指针型常量,它的值是无法改变的;而形参数组名是指针变量,并不是一个固定的地址值,它的值是可以改变的。

    在函数调用开始时,它接收了实参数组首元素的地址,但在函数执行期间,它可以再被赋值。

    C++指针变量作函数参数接收数组地址

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • C语言 函数参数数组

    千次阅读 2015-04-19 11:26:48
    1.数组名可以作为函数实参和形参,传递的数组首元素的地址。这样两个数组就共占同一内存,形参数组中各元素值的改变必将引起实参的改变。 eg.主函数中调用average(score,5);//其中score为数组的名称 float average...

    1.数组名可以作为函数实参和形参,传递的数组首元素的地址。这样两个数组就共占同一内存,形参数组中各元素值的改变必将引起实参的改变。

    eg.主函数中调用average(score,5);//其中score为数组的名称

    float average(float array[],int n) //n=5指定需要传递的元素个数。


    2.多维数组名做函数参数时,形参的定义:

    eg.int array[][10];或int array[3][10];

    但不能把第二维及其它高维的大小说明省略。也不能只指定第一维(行数)而省略第二维(列数)

    数组在内存中按行存放。

    展开全文
  • 函数参数数组时,sh

    函数参数是数组时,声明时应含数组的表示符[];

    并且传入的是数组的首地址,不可知数组的长度;

    若想知道数组的长度,应以另外的参数传入;

    C++数组标号从0开始,在使用相应的数据结构的

    标号时,要对应起来。

    例如声明:

    void  myFunc( int data[], int size_t ){

    }


    当在引用该函数时,改变数组data内的变量,在以后的程序中用到,则可使用引用的形式:

    void  myFunc( int & data[], int size_t ){

    }




    展开全文
  • //因为array是局部变量,随scanffile()函数的结束,该内存被释放,因此,你在之后得不到相应的数据了。 改成static静态变量就可以了! for(i=0;i<n;i++){ fscanf(fp,"%d\t",&array[i]); ...

    int * scanffile(FILE *fp,int n){
         int i;
    static搜索 int array[10]; //因为array是局部变量,随scanffile()函数的结束,该内存被释放,因此,你在之后得不到相应的数据了。 改成static静态变量就可以了!

        for(i=0;i<n;i++){
      fscanf(fp,"%d\t",&array[i]);
     
    }
    for(i=0;i<5;i++)
    printf("%d\t",array[i]);
    return array;
    }

    转载于:https://www.cnblogs.com/nickup/p/6623255.html

    展开全文
  • 本文用简单的例子说明了C语言中数组函数参数,数组名a与&a区别,数组名a的"数据类型",以及编译器的不同,相应指针所占字节的不同导致程序的细微差别。
  • 众所周知,函数在传参数时会复制参数,但传指针时,只是复制了指针本身,而没有复制指针指向的值,所以可以通过传指针或引用来使函数内可以修改外部的值。那么,对于数组,会怎样? 上测试程序 #include&lt;...
  • 2.数组名作为函数参数的时候进行传递的是数组首地址,所以进行的传递是只是地址的传送,形参和实参数组的长度可以不相同,在参数传递的时候只传递首地址而不检查形参数组的长度。 ‘\0’和“\0”的区别? ...
  • 问题描述 用指针变量作为函数参数,接收从数组传来的数组元素首地址,以冒泡排序为例
  • 编译器总是要为函数的每一个参数制作临时副本,指针参数p的副本是_p,编译器使_p=p.如果函数体内的程序修改了_p的内容,就导致参数p的内容做相应的修改。这就是指针可以作为输出参数的原因。在例子中,_p申请了新的...
  • 1、在实际的应用中,数组经常作为函数参数,将数组中的数据传递到另外一个函数中,一般来说,传递可以采用两种方法:1&gt;、数组元素作为函数的实参时,用法跟普通变量作参数相同,将数组元素的值传递给形参时...
  • 数组作为函数参数

    千次阅读 2018-02-03 21:57:55
    数组作为函数参数 数组元素的作用与变量相当,一般来说,凡是变量可以出现的地方,都可以用数组元素代替。因此,数组元素也可以用作函数实参,其用法与变量相同,向形参传递数组元素的值。此外,数组名也可以作实参...
  • 数组函数参数

    2018-03-03 22:15:28
    数组名做函数参数时,不是进行直接的值传递,而是地址的传送,也就是把实参数组的首地址赋予形参数组名。 比如,下面声明了一个数组为函数的参数 int func(int a[10]); 用数组函数参数数组的参数是没有意义...
  • 那么数组的地址指向的内存空间的类型是数组,而数组首元素的地址指向的内存空间的类型的首元素的类型。 int main() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //&a地址获得的是数组这个变量的首地址,而a...
  • 数组不能从函数的return语句返回,数组名其实就是数组首地址 数组作为函数参数 任何数组,不论是静态数组还是动态数组,都在内存中连续存储,二维数组以行序优先存储元素 参数传递的并不是整个数组的内容(性能低...
  • 数组函数调用
  • 如果数组A在函数外定义,并且作参数传入函数,怎么在函数里求其长度?——没法求,一般我们会再多传入一个参数记录长度 动态数组,(1)用new创建的动态数组参数时,在函数里同样也不能求长度,因此一般我们也会...
  • 数组名作为函数参数

    千次阅读 2019-05-09 21:20:54
    这样就可以唯一的确定一个数组了,因为数组是连续存放的,只要知道数组首地址数组的长度就能找到这个数组中所有的元素,那么只要传递这两个信息即可。而一维数组数组名就表示着一维数组首地址。所以只需要...
  • 数组函数参数:将数组逆序排列

    千次阅读 2017-07-18 19:22:04
    数组作为函数参数的时候,没有办法通过指针来获取数组长度,数组长度要作为参数传递给函数。 在函数定义中 int a[10] 这样的形参定义方式会被转化为int * a不管是int a[10]还是int a[],都不会创建出一个数组,...
  • C语言数组元素地址作为函数参数

    千次阅读 2016-08-10 11:40:07
    今天首先来做一个题,值得借鉴。#include<stdio.h> void fun(int *p){ printf("%d",p[5]);//打印第六个元素,但是地址传入的第四个元素, getchar(); } void main() ... //把数组的第4个元素的地址
  • 数组名作函数参数

    2018-10-27 23:21:01
    参数组名代表该数组首元素的地址,而形参是用来接收从实参传递过来的数组首元素地址的,所以,形参应该是一个指针变量(只有指针变量才能存放地址)。函数: Fun(int arr[],int n) 在程序编译时是将arr按指针...
  • 数组指针数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,这个指针不可移动); 例如int(*arr)[4] , 因为 * 先跟 arr 结合,再跟 [ ] 结合,所以其是一个数组指针。 二维...
  • 当用数组名作为实参调用函数时,数组首地址指针就被传递到函数中。 2、一维数组作为函数参数 打印数组某一段区间的元素 #include &amp;amp;amp;lt;iostream&amp;amp;amp;gt; using namespace std; ...
  • 可能很多初学者对C语言中(C++类似),数组作为参数传递,和一个函数如何返回一个数组这类问题很迷惑,因为这里面涉及到指针问题,而初学者对指针了解甚少,更别说使用了。我也是刚刚需要实现一个简单算法才用到这...
  • 数组名作函数参数

    千次阅读 2019-05-31 18:46:10
    关于用数组名作函数参数有两点...(2) 需要特别说明的是: 数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。...
  • 数组专题 1、数组初始化: 数组元素的个数可以显示或隐式指定 int main() { int a[10] = {1,2};//其他没初始化元素,编译器默认帮你初始化为0   int b[] = {1, 2};//编译器隐式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,101
精华内容 59,240
关键字:

函数参数是数组的首地址