假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为()。

题目
单选题
假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为()。
A

char (*w)[N]

B

char *w[N]

C

char (*w)N

D

char**a

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面关于数组的描述错误的是_________。

A在C++语言中数组的名字就是指向该数组第一个元素的指针

B长度为n的数组,下标的范围是0-n

C数组的大小必须在编译时确定

D数组只能通过值参数和引用参数两种方式传递给函数


正确答案:D

第2题:

当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。()


参考答案:正确

第3题:

假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为()。

A. char (*w)[N]

B. char *w[N]

C. char (*w)N

D. char**a


正确答案:B

第4题:

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明1]

函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

[C函数1]

void fun(char*W,char x,int*n)

{ int i,P;

p=0;

w[*n]=x;

while(x>w[p]) (1) ;

for(i=*n,i>p;i--)w[i]=(2);

w[p]=x;

++*n;

}

[说明2]

函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

[C函数2]

void revstr(char*s)

{ char*p,c;

if(s==NULL)return;

p=(3); /*p指向字符串s的最后一个有效字符*/

while(s<p){ /*交换并移动指针*/

C=*s;

(4)=*p;

(5)=c;

}

}


正确答案:(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)
(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--) 解析:函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。

第5题:

请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

例如,若二维数组中的数据为:

W WWW

S S S S

H H H H

则字符串中的内容应是WSHWSHWSHWSH。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include<stdio.h>

define M 3

define N 4

void fun(char (*s)[N],char *b)

{

}

main()

{

char a[100],w[M][N]={{ 'W', 'W', 'W', 'W'},

{'S', 'S', 'S', 'S'},{'H', 'H', 'H', 'H'}};

int i,j;

printf("The matrix:\n");

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

{ for(j=0;j<N;j++)

printf("%3c",w[i][j]);

printf("\n");

}

fun(w,a);

printf("The A string:In");

puts(a);

printf("\n\n");

}


正确答案:void fun(char (*s) [N]char *b) { int i j k=0; for (i=0; iN; i++) /*按列的顺序依次放到一个字符串中*/ for (j=0; jM; j++) b [k++] =s [j] [i]; b[k]='\0'; }
void fun(char (*s) [N],char *b) { int i, j, k=0; for (i=0; iN; i++) /*按列的顺序依次放到一个字符串中*/ for (j=0; jM; j++) b [k++] =s [j] [i]; b[k]='\0'; } 解析:看到程序后,我们很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。注意其中第1个循环条件为iN(即列),第2个循环的条件为JM(即行),这是因为在循环的嵌套中越在内层,循环变化就越快。另外,在编写程序中注意是s[j][i]而非s[i][j]。

第6题:

下面关于数组的描述错误的是

A.在C++语言中数组的名字就是指向该数组第一个元素的指针

B.长度为n的数组,下标的范围是0~n-1

C.数组的大小必须在编译时确定

D.数组只能通过值参数和引用参数两种方式传递给函数


正确答案:D
解析:本题考查的是数组的基本使用,数组还可以通过对应的指针调用传递参数,其余选项的说法都是正确的。

第7题:

假定二维数组的定义为“char a[M][N];”,则该数组共包含有___个字符

元素。


参考答案M*N

第8题:

假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为()。

a. char a

b. char* a

c. char& a

d. char**a


正确答案是:B

第9题:

若有函数

Void fun( double a[ ],int *n)

{ …… }

以下叙述中正确的是

A)调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

B)形参a和n都是指针变量

C)形参a是一个数组名,n是指针变量

D)调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组


正确答案:C
【答案】C
【知识点】函数参数传递
【解析】a是形参数组的名字,接收从调用函数中传过来的实参数组的首地址,n是指针变量。

第10题:

下面关于数组的描述错误的是( )。 A.在C++语言中数组的名字就是指向该数组第一个元素的指针SXB

下面关于数组的描述错误的是( )。

A.在C++语言中数组的名字就是指向该数组第一个元素的指针

B.长度为n的数组,下标的范围是0~n-1

C.数组的大小必须在编译时确定

D.数组只能通过值参数和引用参数两种方式传递给函数


正确答案:D
本题考查的是数组的基本使用,数组还可以通过对应的指针调用传递参数,其余选项的说法都是正确的。

更多相关问题