【C 语言】数组元素和数组名作为函数参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【C 语言】数组元素和数组名作为函数参数相关的知识,希望对你有一定的参考价值。
参考技术A 一种是把数组元素(下标变量)作为实参使用;一种是把数组名作为函数的形参和实参使用。
数组元素作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传给形参,只是“拷贝”实参中的变量的值,传送给形参,实现单向的值传送
用数组名作为函数参数与用数组元素作实参有几点不同:
1)用数组元素作函数参数不要求形参也必须是数组,但是用数组名作函数参数时,则要求形参和相对应的实参都是类型相同的数组。
2)在 C 语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,当数组名作函数参数时,实参与形参之间不是“值传递”,而是“地址传递”,实参数组名将该数组的其实地址传给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。
3)在变量做函数参数时,所进行的值传递是单向的。即只能从实参传向形参,不能从形参传回实参。
1)形参数组和实参数组类型必须一致,否则出错。
2)在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素的个数。
或写为:
n 的值由主调函数的实参进行传递。
所有的地址都占8个字节。
3)形参数组和实参数组长度可以不相同,因为在调用时,只传递首地址而不检查形参数组的长度。
数组名作为函数参数.我编的这个错在那?
//用数组名作为函数参数,编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t时返回0,s大于t时返回1。在主函数中任意输入4个字符串,利用该函数求最小字符串。
#include"stdio.h"
void sort(int num[],int n)
int i,j,k,t;
for(i=0;i<=n-1;i++)
k=i;
for(j=i+1;j<10;j++)
if(num[j]>num[i]) k=j;
if(k!=i)
t=num[i];
num[i]=num[k];
num[k]=t;
void main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num[],10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);
显示:error C2601: 'main' : local function definitions are illegal
这个错误又是什么意思?
各位……照你们的方法改了……错误多了一个
fatal error C1004: unexpected end of file found
原来那个继续保留。。。
题目复制错了。。是这个
编写函数实现将数组元素按从小到大的顺序排序,主函数从键盘输入10个整数存入数组,调用函数后输出数组的元素。
void sort(int num[],int n)
int i,j,k,t;
for(i=8;i>=0;i--)
for(j=0;j<=i;j++)
if(num[j]>num[j+1])
t=num[j];
num[j]=num[j+1];
num[j+1]=t;
void main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num,10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);
这样就能实现了 不信 你试试本回答被提问者采纳 参考技术B
看注释
大括号不匹配
参数用的不对
算法有毛病。
#include"stdio.h"void sort(int num[],int n)
int i,j,k,t;
for(i=0;i<=n-1;i++)
k=i;
for(j=i+1;j<n;j++)//改成n
if(num[j]>num[k]) k=j;//改成num[k]
if(k!=i)
t=num[i];
num[i]=num[k];
num[k]=t;
//加一个大括号
void main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num,10);//去掉[]
for(i=0;i<10;i++)
printf("%4d\\t",num[i]);
//删一个大括号 参考技术C 显示:error C2601: 'main' : local function definitions are illegal
这个错误的话
你试试看
int main()
int i,num[10];
for(i=0;i<10;i++)
scanf("%d",&num[i]);
sort(num[],10);
for(i=0;i<10;i++)
printf("%4d\t",num[i]);
return 0;
你程序里别的错误同上面两个人= = 参考技术D 上面的 与不配对
下面多了个
sort(num[],10);
在使用函数时,直接用数组名就可以sort(num,10); 第5个回答 2010-12-06 上面的 与不配对
下面多了个
以上是关于【C 语言】数组元素和数组名作为函数参数的主要内容,如果未能解决你的问题,请参考以下文章