1.用calloc函数创建具有10个整型元素的动态存储空间的正确调用是
- calloc(10,sizeof(char))
- calloc(10)
- calloc(10,sizeof(int))
- calloc(20, sizeof(int))
解析:
动态内存分配
系统通过库函数来实现,主要有malloc,calloc,free,realloc
1.malloc函数
函数原型:
void *malloc(unsigned int size);
作用是在内存的动态存储器分配一个长度为size的连续空间
这个函数是指针型函数返回的是该分配域的开头地址
2.calloc函数
函数原型:
void *calloc(unsigned n,unsigned size);
作用是在内存的动态存储区中分配n个长度为size的连续空间
3.free函数
函数原型:
void free(void *p);
作用是释放指针变量p所指向的动态空间
4.realloc函数
作用是重新分配指针p的内存空间
sizeof是运算符用来查看分配的内存空间大小
2.for 循环语句能够被改写为( )语句
解析:while
3.C 语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符
解析:必须为字母或下划线
4.已知程序如下:
int S(int n) {
return (n<=0)?0:s(n-1)+n;
}
void main() {
cout<< S(1);
}
程序运行时使用栈来保存调用过程的信息,自栈底到栈顶保存的信息依次对应的是 。
解析:main()→S(1)→S(0)
不会
5.以下描述错误的是:
- 函数的形参在函数未调用时不分配存贮空间
- 若函数的定义出现在主函数之前且仅被主函数使用,则可以不必再说明
- 若一个函数(非主函数)没有return语句,返回类型是void
- 一般来说,函数的形参和实参的类型应该一致
解析:
6.()运算符把其操作数中所有值为0和所有值为1的位分别在结果的相应中设置1和0
- &
- |
- !
- ~
解析:
~为取反运算符是位运算符之一
用于使运算数的每一位取反
7.有以下程序
#include <stdio.h>
#include <string.h>
void fun( char *s )
{
char a[10];
strcpy ( a, "STRING" );
s = a ;
}
main( )
{
char *p= "PROGRAM" ;
fun( p );
printf ( "%s\n ", p) ;
}
程序运行后的输出结果是(此处□代表空格)?
解析:
PROGRAM
个人看法:
关于常量是存储在只读存储器,是先有的值
后有的变量指向该值
变量只能改变存储的指向地址而不能改变常量的值
而且在该题还存在
函数的地址参数传递(形参开辟新的内存空间存储实参)
开始s与p都是指向常量“PROGRAM”的首元素地址
s = a 后
s指向a的首元素的地址
p不变
8.已知ii,j都是整型变量,下列表达式中,与下标引用X[ii] [j]不等效的是
- *(X[ii]+j)
- *(X+ii)[j]
- *(X+ii+j)
- ((X+ii)+j)
解析:
x+ii = x[ii]
*(X+ii)[j] 因为[]的优先级高
所以不对
*(X+ii+j)是x[ii+j]的值