1.int a[3][2]={2,4,6,8,10.12};则*(a[1]+1)的值是8
指向(a[1]的第二个元素) 再*
2.合并字符串库函数strcat
3.比较字符串库函数strcmp
4.执行结果是x=3,y=3
int x=3,y;
int *px=&x;
y=*px++;
(优先级++高于*)
5.*p[5]没有实际意义,p[5]和*(p+5)才有
6.若有说明:int *p1,*p2,m=5,n;则正确的是(C)
(B)p1=&m;p2=&n;*p1=*p2;
(C)p1=&m,p1=p2;
7.找出不能正确赋值的程序语句(C)
(A) p1 = &ch; scanf("%c", p1);
(B) p2 = (char *)malloc(1); scanf("%c", p2);
(C) * p3 = getchar();
(D) p4 = &ch; *p4 = getchar();
malloc函数:
原型---extern void * malloc(unsigned int num_byte);
作用---分配长度为num_byte字节的内存块;
8.
void fun(int a)
{a=456;}
main()
{int x=10;fun(x);
printf("%d",x);
}
这段代码的输出结果是 10
fun 函数没有返回值,在函数内部对参数的修改不会影响到主函数中变量的值
最后, printf("%d,%d,%d\n", z, y, x); 输出的是 z , y , 和 x 的原始值,即 30,20,10
而数组作为函数参数实际上传递的是首地址,可以改变
9.判断以下函数调用语句中实参的个数:
func((e1,e2),(e3,e4,e5));
在这个函数调用中,实参是传递给函数的实际参数值。根据题目中的函数调用语句,我们可以看到有两个括号内的表达式作为实参:
(e1, e2)
(e3, e4, e5)
因此,这个函数调用中有两个实参
10.strcat(a2,a1);
将a1串联到a2后面
11.字符串大小比较(ASCII码值)
12.选项C是错误的
(A) 函数的形式参数在函数未被调用时就不被分配存储空间
(B) 若函数的定义出现在主调函数之前,则可以不必再加说明
(C) 若一个函数没有return语句,则什么值也不会返回
(D) 一般来说,函数的形参和实参的类型要一致
例如,int类型的函数如果没有return语句,默认返回0
13.函数调用,不可以作为一个函数的形参
14.int N=5,b[5][5]不行
15.已定义字符数组a
gets(a);
也就是scanf(“%s”,a);
16.strcat(strcpy(s1,s2),s3);
将s2复制到s1中,再将s3接到s1后
17.函数的递归调用
18.不检查数组下标是否越界
19.二维数组按行优先排放