百家拳C语言测试中心

相关链接

    C语言指针测试题(3)

  1. 在下列程序代码中,声明了一个数组指针并指定了初始值,其方式是否正确? int *p1; int array1[5]; p1=array1;

  2. 正确
  3. 下列提说明是否正确?
    char* s1=” This is a Key”;//声明字符串指针
    char *p1; //声明指针变量

  4. 正确
  5. 利用简单的文字来解释,下列的变量所代表的意思。 int *ptr0; int *ptr1=2000; int*ptr2=NULL;

  6. int*ptr0;:声明一个动态内存变更,但没有直接配置真实内存空间。int*ptr1=2000;:声明一个动态内存变量,且直接配置内存地址2000给变量。int*ptr2=NULL;:声明一个动态内存变量,并配置一个空的内存空间,但还没有真实的内存空间。
  7. 有一个变量val,若指导它的值存在内存地址0*1000中,请问程序代码应该如何编写?并说明程序流程.


  8. int val=5; //声明一个int数据类型的val变量
    int*ptr3=(int*)0*1000; //声明一个内存地址为0*1000的变量
    ptr3=&val; //将val变量的地址指定给指针变量 ptr3
  9. 说明下列程序代码所代表的意义。

  10. 声明一个int类型的动态变量,并配置一个新的int数据长度的内存空间让变量业使用。 int *ptr=(int *)malloc(sizeof(int));
  11. 说明下列程序代码的最后内存地址是什么?并阐述理由.
    int *ptr=( int *)1000;
    ptr+=3;
    ptr--;

  12. 1008。最初的内存地址为1000,“ptr+=3”是将内存地址往后取3个int数据长度,int数据长度为难个字节,所以一共移动了12个字节,现在的内存地址为1012,而“ptr--”往前移动了个字节,所以量后停留的内存地址为“1008”。
  13. 简单说明指针运算的意义与作用。

  14. 指针变量虽然是一种用来存储地址值的变量,但也可以针对指针使用“+”运算符或“-”运算符来进行运算,不过运算结果与一般变量大不相同。事实上,当对指针变量使用这两个运算会时,并不是进行一般变量的加法或减法运算,而是用来增减内存地址的偏移量,而移动的基本单位则视所声明的数据类型面定。
  15. 以下程序代码哪一行有错误?试说明原因。
    int value=255;
    int *piVal,*piVal1;
    float *ppp;
    piVal=&value;
    piVal1=piVal;
    ppp=piVal1;

  16. 第06行,因为一旦确定指针所指向的数据类型,就不能再更改了。另下指针变量也不能指向不同数据类型的指针变量。
  17. 以下程序代码是四重指针的应用,请问***ptr与***ptr的值是什么?并加以说明.
    int num=1000;
    int *ptr1=#
    int **ptr2=&ptr1;
    int ***ptr3=&ptr2;
    int ****ptr4=&ptr3;

  18. 皆为1000
  19. 以下程序代码是否有错?请加以说明.
    int arr[10],value=100;
    int *ptr=&value;
    arr=ptr;



  20. 03行有错,因为数组可以直接当成指针常来运算,而数组名地址是是数组第一个元素的地址。不过由于数组的地址是只读的,因此不能改变其值,这点是和指针变量最大的不同。
  21. 如何求得一维数组折长度大小?

  22. 数组长度=sizeof(数组名)/sizeof(数组名[0])。
  23. 什么是指针数组?

  24. 指针也可以像其他变量一样,声明成数组方式,称为指针数组。每个指针数组中的元素都是一个指针变量,而元素值则为指向其他变量的地址值。
  25. 说明内存泄漏(Memort Leak)的意义.

  26. 如果在程序执行期间配置的内存未释放,将会造成内存空间浪费,形成所谓的内存泄漏(Memory Leak),这种情况对于有些需要一次使用大量内存的程序,将有可能无法执行或导致系统动作越来越缓慢等情况发生。
  27. 动态内存分配(Dynamic Allocation)的意义是什么?在C语言中,有哪些函数可以在程序执行期间动态分配与释放内存空间?

  28. 所谓动态内存分配(Dynamic Allocation),是指在程序执行过程中,才提出配置内存的要求,主要的目地是让内存运用更为灵活。从程序本身的角度来年,动态分配机制可以在程序执行的时候再进行数据声明。在C语言中,可以分别使用malloc()与free()函数在程序执行期间动态分配与释放内存空间,这两个函数定义在头文件中。其中mallo()函数会根据所要求的内存大小,在内存中配置足够的空间,并传给所配置内存的指针值,也就是内存地址。
  29. 写出动态分配整数二维数组ppiArrVal[2][3]的释放程序代码。


  30. 1)配置 int**ppiArrVal=(“int**”)malloc(2*sizeof(int*));
    ppiArrVal[0]=(int*)malloc(3*sizelf(int));
    ppiArrVal[1]=(int*)malloc(3*sizelf(int));
    2) 释放
    free(ppiArrVal[0]);
    free(ppiArrVal[1]); /*第二维数组内存释放完毕*/
    free(ppiArrVal); /*第一维数组内存释放完毕*/

自我评价 答对0--2题 答对3--4题 答对5--6题 答对7--8题 答对9--10题

上一篇