关于C语言中 将数组作为函数参数的问题 急!
发布网友
发布时间:2022-07-15 09:44
我来回答
共3个回答
热心网友
时间:2024-07-30 08:54
#include <stdio.h>
void pick(char a[], int n, char new_a[])
{
int i;
int j = 0;
for ( i = 0; i < n; i++ )
if ( a[i] >= '0' && a[i] <= '9' )
new_a[j++] = a[i];
new_a[j] = '\0';
}
void main()
{
char a[60], i; // 由于字符串最后加了一个‘/0’,故要存五个字符,必须有六个空间, 要完成实例,则定义的大些,定义到60,则只要输入字符不超过59即可
/*for ( i = 0; i < 5; i++ )
scanf( "%c", &a[i] );*/
scanf( "%s", a ); //用%s 输入字符串更方便些
char new_a[60]; // 按要求,要把数字放到新串中,先定义一个新串
pick( a, 60, new_a );
/*for ( i = 0; new_a[i]; i++ )
printf( "%c", new_a[i] );*/
printf( "%s", new_a );
}
运行结果:
567adsfdsf87dasg7das8f9ds
56787789请按任意键继续. . .
热心网友
时间:2024-07-30 08:55
首先:
char a[] 是指针,不是数组!!! 和char *a基本一样
数组参数,里面必须要有数:char a[5]!
数组参数:
觉得你的程序抄得有问题,可以写
a[i]=0;
热心网友
时间:2024-07-30 08:55
#include "stdio.h"
#define N 7
/*****************/
int m;
void pick(char a[],int n)
{
int i; m=0; //控制变量
for(i=0;i<n;i++) //保存字符
if(a[i]>='0'&&a[i]<='9')
a[m++]=a[i];
}
/*****************/
void main()
{
char a[N],i;
printf("请输入字符:");
for(i=0;i<N;i++) //字符输入
scanf("%c",&a[i]);
pick(a,N); //调用函数
printf("\n数字字符是:");
for(i=0;i<m;i++) //字符输出
printf("%c",a[i]);
printf("\n");
}
这里定义了全局变量m,以便在主函数中控制输出,子函数中只是完成了挑选作用.
另外宏定义N值可大可小,只需修改N值就可以达到输入任意长度的字符串 的目的.
c语言中数组名为函数实参的问题?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
关于C语言中 将数组作为函数参数的问题 急!
scanf( "%c", &a[i] );*/ scanf( "%s", a ); //用%s 输入字符串更方便些 char new_a[60]; // 按要求,要把数字放到新串中,先定义一个新串 pick( a, 60, new_a );/*for ( i = 0; new_a[i]; i++ )printf( "%c", new_a[i] );*/ printf( "%s", new_a )...
关于C语言的二维数组作为函数参数的问题?
int arr[n][m];实际上相当于:int n=2,m=3;int (*arr)[m];所以,传递二维数组作为参数,实际上就是传递了一个指针。将形参的类型定义成int*,再在函数内部转换回指向数组的指针就行了,比如:void f(int *p,int row,int column){ int (*arr)[column]=(int (*)[column])p;//使用二...
关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:2、添加一个array.c文件,如图所示:3、包含stdio.h和stdlib.h头文件,如图所示:4、输入main函数主体及返回值,如图所示:5、定义一个数组arr,如图所示:6、定义一个function函数,如图所示:7、将数组作为参数传递给function函数,如图所示:8、运行程序,输出...
C语言中,数组名作为函数参数,属于什么传递,为什么?
C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储...
c语言怎么将数组作为函数参数传入?
//数组作为函数参数,可以省略元素个数 //数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组 void change(int array[]){ printf("array ==%p\n",array);array[0] = 100;} int main(){ int ages[6] = {10,11,13,15,11,18};printf("array =...
c语言为什么不能用数组做函数参数?
sum是一个不可预料的值。1、常量其值不可改变,符号常量名通常用大写。2、变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
C语言,数组元素作为参数在自定义函数中交换数值,输出后结果并没有调换...
是的需要引用调用才会改变,void swap2(int &x,int &y)
C语言选择题:当数组名作为函数参数时,传递给被调函数的是?
这个选择题的答案是C,即当数组名作为函数参数时,传递给被调函数的是数组的第一个元素(下标为0)的地址。
C语言中,数组名作为函数参数,属于什么传递,为什么?
属于地址传递,在函数里修改的话,将直接影响调用方的数值。这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已。在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的。所以是第于是地址传递。