数组名与函数的结合使用注意项

数组名即数组的首地址,故数组名属于指针变量,在定义函数使数组名作为形参时,要把对应的参数定义为指针变量。因为数组没有特定的使其读入停止的标志,因此还要有确定数组长度的参数,即用户自己输入数组长度。

代码如下:

# include <stdio.h>

void f (int *x,int len)

{

  int i;

  for(i=0;i<len;i++)

    printf("%d  ",*(x+i));       //输出时要用*(x+i),不能直接用main函数中的数组名(数组名不确定)

}                     //但是可以使用x[i], 即 printf("%d  ",x[i]):

int main (void)

{

  int a[5];

  f (a,5);

  

  return 0;

}

时间: 2024-09-30 00:05:05

数组名与函数的结合使用注意项的相关文章

数组名做函数参数

数组名做函数参数 用数组名做函数参数与用数组元素作实参有几点不同: (1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的形参也是下标变量.换句话说,对数组元素的处理是按普通变量对待的.用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明.当形参和实参两者类型不一致时,机会发生错误. (2)用普通变量或下标变量作函数参数时,形参变量和实参变量都是由编译系统分配的两

c/c++数组名和指针区别深入探索

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用.于是乎,很多程序设计者就被搞糊涂了.而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针".很幸运,我的大学老师就是其中之一.时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解. 想必这种误解的根源在于国内某著名的C程序设计教程.如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,

数组名和指针的深入理解(C++)

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用.于是乎,很多程序设计者就被搞糊涂了. 魔幻数组名 请看程序(本文程序在WIN32平台下编译): #include <iostream> using namespace std; int main() { char str[10]; char* pStr = str; cout << "sizeof(str): \t" << sizeof(str) <&

【C语言】数组名传递给函数,数组的sizeof变为4的原因

C语言中,数组名作为参数传递给函数时,退化为指针,sizeof对指针操作结果应该是4.例子如下: #include<iostream> using namespace std; void Swap_arr(char* charArr){ int len = sizeof(charArr); cout << "len =" << len << endl; //输出len =4 } int main(){ char charArr[] = &

C语言中值得深入知识点----数组做函数参数、数组名a与&amp;a区别、数组名a的&quot;数据类型&quot;

1.数组作为函数参数 C语言中,数组做为函数的参数,退化为指针.数组作为参数传给函数时,传的是指针而不是数组,传递的是数组的首元素的地址.这里我们以将以整形变量排序来讲解. void sortArray(int a[] ,int num )以及void sortArray(int a[100] ,int num )都可以用void sortArray(int *a ,int num )表示.一般来说函数参数如果为数组,可以有两个参数,一个是数组名,一个是数组长度.对于排序而已,一般是要知道给定数

二维数组如何作为函数参数使用?(转)

如果我们需要编写一个处理二维数组的函数,那么这个函数原型应该如何声明呢? 首先,我们应该牢记:数组名被视为其地址,因此,相应的形参是一个指针.例如,假设有如下的代码: [cpp] view plaincopy int data[3][4] = { {1, 2, 3, 4}, {5, 5, 7, 8}, {9, 10, 11, 12} } int total = sum(data, 3); 那么sun函数的原型应该如何声明呢?为什么将行数3作为参数,而不将列数4作为参数呢? 我们可以这样理解:da

C 语言中的左值和右值。以及对比数组名和指针取数组元素的区别。

左值:出现在赋值符左边的符号有时称为左值. 右值:出现在赋值符右边的符号有时称为右值. 编译器为每个变量分配一个地址(左值),这个地址在编译时可知,而且该变量在运行时一直保存于这个地址.相反,存储于变量中的值(它的右值)只有在运行时才可知.如果需要用到变量中存储的值,编译器就发出指令从指定地址读入变量值并将它存于寄存器. 可以看到,每个符号的地址在编译时可知. 对比一下几个式子: //常规变量 int a=1;//这里a作为左值出现,代表的是地址,即在a表示的这个内存地址存入数值1.即a代表的内

编程题:数组名作为函数参数。需要根据下面要求来实现

编程题:数组名作为函数参数. 要求分析:形参和实参都是数组名,传递整个数组,形参数组与实参数组必须等同,是存放在同一空间的同一个数组.形参数组修改时,实参数组也同时被修改,否则无法运行. #include<stdio.h> void change(int x[2]) { int t; printf("x[0]=%d,x[1]=%d\n",x[0],x[1]); t=x[0];x[0]=x[1];x[1]=t; printf("x[0]=%d,x[1]=%d\n&q

PHP数组和字符串函数

1.1关于数组操作的函数 1.1.1range(start,end) 创建一个数组,值从start开始,一直到end结束 如果range里面的参数是数字,那么他直接按照数字大小的顺序排序,如果里面的参数是一个字符,那么他将按照ascii编码的顺序排序. 1.1.2array_rand() 随机取出一个数组的下标 array_rand存在第二个参数,默认情况下是1,代表获取一个数组元素的下标,他的数据类型等同于下标的数据类型,但是如果一次性随机获取多个元素的下标,他返回的是一个数组. 虽然他是随机