阐述程设理论2

2023-12-15 05:43:54

1.若用数组名作为函数调用的实参,则传递给形参的是(A)
A.数组首元素的地址
B.数组的第一个元素的值
C.数组中全部元素的值
D.数组元素的个数

实参(fun(1)), 形参(fun(int a) )

参数里面int p[]可以写成*p

2.以下叙述中,正确的是(A)
A.实参与其对应的形参各占独立的存储单元
B.实参与其对应的形参共占存储单元
C.只有当实参和与其对应的形参同名时,才共占存储单元
D.形参是虚拟的,不占用存储单元

‘\0’=0
输出NULL也是0?

int fun(char *x){
   char *y=x;
   while(*y++);
   return(y-x-1);//不懂为什么-1
}
int astr(char *s, char *t)
{
	while((*s)&&(*t)&&(*t++ == *s++));
	return (*s-*t);//这里是值相减,也就是比较两个字符串大小
}

几个函数
strcpy
strcat

int main(){
	char *p1,*p2,str[50]="ABCDEFG";
	p1="abcd";
	p2="efgh";
	strcpy(str+1,p2+1);//可以看成取str[0~1-1],就是从1这里开始拼与p2[1~end]拼接起来
	strcpy(str+3,p1+3);//从3这里开始拼
	printf("%s",str);
}

B.语句块 char *p = “hello” + 1; printf(“%s”, p); 输出结果是 ello
D.对于 char *p = “hello”; char *q = “hello”; ,p和q的值是一致的

(多选)下面关于指针的描述正确的是:( )
A.当使用free释放一个指针内容后,指针变量的值被置为null;
B.32位系统下任何类型指针的长度都是4个字节;
C.指针的数据类型声明的是指针实际指向内容的数据类型;
D.野指针是指向未分配或者已经释放的内存地址;

(多选)下列指针类型与描述相匹配的有:( )
A.int **p : 一个指向指针的指针;
B.int (*p)() :一个指向函数的指针;
C.int p(char *a):一个形参为指针的函数;
D.int *p(char *a):一个形参与返回值均为指针的函数;

char s1[5]="abcd";
char s2[]="abcd";
char s3[] = {'a', 'b', 'c', 'd'};
char *s4 = "abcd";

这样子定义的都是什么呢,什么时候会有\0

定义:char (*p)[5]; 表示的含义是:A
A.定义了一个指向一维数组的指针p,所指向的一维数组具有5个char元素;

int (*fun)( )表示的含义是:
C.一个用于指向函数的指针变量;

定义:int *fun( );表示的含义是:
D.一个返回值为指针的函数名;

关于定义const int p的说法正确的是:B
A.p的指向不可以改变;
B.不能通过
p去修改p指向的变量的值;
C.以上两者均不能改变;
D.以上两者均可以改变;

下面程序段的输出是:

static char *s[] = {"black", "white", "pink", "violet"};
char **ptr[] = {s+3, s+2, s+1, s}, ***p;
p = ptr;
++p;
printf("%s", **p+1);
int a[] = {2, 4, 6, 8, 10};
int *p = a;
*p++;
//是p++先,*和++运算级:++先
printf("%d ", *p);
(*p)++;
printf("%d ", *p);

输出4 5

假设 s 是字符数组,下面哪条语句与其他3条不等价?
A.*s = 0;
B.s[0] = ‘\0’;
C.strcpy(s, “”);
D.strcat(s, “”);

下面说法正确的是 ( ACD)
A.32位系统下任何类型指针的长度都是4个字节;
B.当使用free释放一个指针内容后,指针变量的值被置为null;
C.int *p(char *a)表示一个形参与返回值均为指针的函数;
D.指针的数据类型声明的是指针实际指向内容的数据类型;

下列关于const char* p1,char const p2,const char const p3的说法中,正确的是:CD
A.p1不可以修改,可以通过
p1修改变量
B.p2可以修改,不可以通过
p2修改变量
C.p3不可以修改,也不可以通过*p3修改变量
D.p1可以指向不是常量的变量,p2可以指向常量

在32位平台上,变量p1, p2的声明如下:
int *p1[10];
int (*p2)[10];
A.p1是数组指针,p2是指针数组
B.p1是指针数组,p2是数组指针
C.p1占内存字节数为40,p2占内存字节数为4

已知函数int fun(int N), 函数指针 p, 及变量 x,y,则下列描述中正确的有:AD
A.p=fun;表示将指针p指向函数fun;
B.p=fun(x);表示将指针p指向函数fun;
C.y= *p(x); 表示调用指针p指向的函数;
D.y= (*p)(x); 表示调用指针p指向的函数;

一些传参:
void sortByLength(char *strArray[], int numStrings);

二维数组
#define COL 3
#define ROW 3
void matrixInput(int (*mat)[COL]);
void matrixPrint(int *mat[ROW]);
void matrixAddT(int *mat);

文章来源:https://blog.csdn.net/SSL_hzb/article/details/135004601
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。