C语言数组做形参的问题
在函数定义的时候,形参int arr[]不是表示某个元素的值,而是告诉编译器第一个参数是一个数组指针,可以接收实参传过来的数组地址。实际上以上定义等价于下面的定义。
char (*p)[n]表示p是指向含有n个元素数组的指针变量;char p表示p是指针变量,指向的类型是指针。
b[],int n)/*其中函数参数有两个:一个是数组,形参的形式是b[],它在调用是接受具体数组的首地址;另一个形参是N,它在调用时数组元素的具体个数。
int arr[n][m];实际上相当于:int n=2,m=3;int (*arr)[m];所以,传递二维数组作为参数,实际上就是传递了一个指针。
int a[3][4];int **p = a;//错误 这个代码的错误之处在于a是一个数组,它的成员也是数组,所以a叫做“数组的数组”——C中严格说来没有二维数组。
c语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。还是用例子说话吧。
c语言形参是指针的情况
形参是指针,实参就应该是对应数据类型的地址。
在C语言,数组无论作为参数还是返回值,都是以指针形式返回或者传递的。在数组中,数组名字代表的是数组第1个元素的地址。比如如下数组。int a[10]= {1,2,3,4,5,6};数组名a,实际上相当于&a[0]。
你要记住。当实参是数组名元素的时候,形参是用指针接收的。所以*ss实质是指针,存放的是tt的地址。只不过*ss可以写成数组的形式:ss[i]。
函数的返回值“绝不能”是函数数组,而只能是指向数组或函数的指针。有些人喜欢理解为:除数组和函数之外所有C语言参数在默认情况下都是传值调用,数组和函数都是传址调用。
c语言指针数组做main的形参
1、argc 等于命令行位置参数总个数。argv[0] 是可执行程序名 argv[1],argv[2],…argv[argc-1] 是位置参数。
2、main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。
3、分析指针时,需要看这个变量指向的是谁,指向是什么类型。
4、因为UNIX的系统命令echo可以理解为调用了系统内置的echo这个程序,因此程序的名称必须是echo。而一般C语言编译器在编译、链接、生成程序文件时,会直接使用代码文件的文件名,所以正常情况下你必须用echo.c作为代码文件的文件名。
c语言指针做形参
1、argc 等于命令行位置参数总个数。argv[0] 是可执行程序名 argv[1],argv[2],…argv[argc-1] 是位置参数。
2、指针可以随时指向任意类型的内存块,它的特征是可变,所以我们常用指针来操作动态内存。当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
3、你要记住。当实参是数组名元素的时候,形参是用指针接收的。所以*ss实质是指针,存放的是tt的地址。只不过*ss可以写成数组的形式:ss[i]。
4、用在声明语句时,如 int A;int &a=A;表示a为A的引用,也叫别名,两者其实是一个东西。引用在其声明时被初始化。用在变量前,如 int A;int*a=表示取地址。
5、因为使用地址作参数,那么传参就是传地址啊,当然要传u_x即&x啦 另外,对指针来说,定义的时候加*是为了区别指针变量与非指针变量,如果函数定义中的int *a,int *b的两个星号去掉,那就说明形参变量不是指针类型了。
用c语言用指针变量作形参,数组名作实参,求十个整数的平均值?
1、先在循环语句中进行10个数的累加在sum里面,然后在循环语句外使用(average=sum/10)来计算10个数的平均数。
2、首先新建一个 求数组内所有元素的平均值项目。添加一个 average.cpp 文件。包含需要用到的各种头文件。输入main函数。定义一个double类型的数组arr[5]。使用 for 循环求出arr数组的平均值。
3、定义最基础的数组,输入10个整数;根据题意,要去掉两个最大的数,所以进行冒泡排序;最后在剩下的8个数中求平均值,即在num[0]~num[7]中求平均值。
4、(14) As Integer 15 个元素。Dim Sums (20) As Double 21 个元素。为建立公用数组,直接用 Public 取代 Dim。
5、思路:定义整型数组a,max,min和aver,for循环键盘输入,把输入数和max、min比较更新max和,min,并aver进行累加,最后输出max、min和aver除以10即可。
C语言,用指针的指针做形参,我这个程序应该怎么改
在char string[] = ba,ba,d后增设一个指针变量pt,写成char string[] = ba,ba,d,*pt;,然后在while前加一句pt=string;。再把while的()中的strtok_s(string,…改写成strtok_s(pt,…。
因为第三条,当把数组名作为函数的形参进行传递时,该效果等同于传递一个同类型的指针。直接在程序当中调用 函数名(数组名)即可。
指针作为函数形参 可以 没有返回值。定义的void函数,无论带不带指针作型参都不会报错。你的是其他错误,尝试去读编译器查的错。你可以把你写的程序发出来,大家看看就很了然了。
因为使用地址作参数,那么传参就是传地址啊,当然要传u_x即&x啦 另外,对指针来说,定义的时候加*是为了区别指针变量与非指针变量,如果函数定义中的int *a,int *b的两个星号去掉,那就说明形参变量不是指针类型了。
利用指针作函数参数,设计一函数实现将n个元素进行排序 将这n个元素存在数组里,然后用指针类型参数接收即作为形参,然后采用排序算法对这些元素进行排序即可 C语言,编写一函数,其功能是求一个长整数各位数字之和。