有如下语句 int a[10] = {1,2,3,4,5,6,7,8,9,10};int *p = a;则数值为9的表达式是______

*p+9                       b)       *(p+8)                    c)       *p+=9                    d)       p+7

解析:B

数组的下标是从 0 开始的,9 在 a [ 8 ] 这个位置上,p当前指向 a [ 0 ] ,所以需要向后移动8位,a和c 都是移动9位,d是地址偏移 7 位 .

若有定义语句:int a[3][6];按在内存中存放的顺序,a数组的第10个元素是_____

a[0][3]                    b)       a[1][4]                    c)       a[0][4]                    d)       a[1][3]

解析:D

这个二维数组的正确理解方式应该是 : 定义了一个名字为a的数组,a数组里面有三个元素,每个元素包含6个int类型的变量,数组的第十个元素应该是a[0][6]之后的a[1][3],这个知识点的考察点在于要认识二维数组中的元素和指针都是怎么存储和指向的,指针是如何偏移的。

以下数组定义中错误的是______

A. int x[][3] = {0};                                 B. int x[2][3] = {{1,2}, {3,4}, {5, 6}};

C. int x[][3] = {{1,2,3}, {4,5,6}};        D. int x[2][3] = {1,2,3,4,5,6};

解析:B

第一个中括号表示数组当中元素的个数,第二个中括号表示每个元素中(类似一维数组的)变量的个数。

在定义二维数组的时候第二个中括号(元素的个数)是必须被定义的。B中等号右边的正确定义应该是a[][2].

若有说明:int i,j=2, *p=&i;, 则能完成i=j赋值功能的语句是_____

A)*p=*&j;          B)i=*p     C)i+&j;           D)i=**p;

解析: A

下列程序的运行结果是______

int main()

{

int a[5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

int* p = a;    //p指向0 ,偏移量是int字节

int (*p2)[2] = &a[1];   //  p2指向{2,3}中的首地址,偏移量是int*[2]字节(两个int字节)

++p;    //p向后偏移一个int字节    指向1

++p2;     //p2向后偏移两个int字节  指向4

printf("%d\n", *p);

printf("%d\n", **p2);

printf("%d\n", p2[1][2]);     //p2 先向后偏移一个int*2字节(两个int)  p2[1]再向后偏移两个int字节得到p2[1][2]    指向8

return 0;

}

下面的程序输出结果为________

#include <stdio.h>

int main()

{

int a[] = {10,20,30,40,50};

int *p = (int*)(&a+1);     // &a的含义为a[]的地址,偏移量为5个int  *p指向50后面的一个元素

printf("%d %d\n",*(a+1),*(p-1));     // a为首元素的地址,偏移量为一个,所以指向20     p-1指向50的地址,间接引用后的结果为50

return 0;

}

C语言练习题库----数组的更多相关文章

  1. Standard C 语言标准函数库介绍

    全面巩固所知所学,往精通方向迈进! Standard C 语言标准函数库速查 (Cheat Sheet) from:http://ganquan.info/standard-c/function/ C ...

  2. C语言变长数组data[0]

    1.前言 在刷题时遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0] ...

  3. Redis学习之路(008)- Redis C语言客户端库hiredis文档翻译

    Hiredis是Redis数据库一个轻量的C语言客户端库. 之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能.但正是由于这种设计使我们只要熟悉了通用的r ...

  4. C语言函数库

    C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...

  5. C语言cJSON库的使用,解析json数据格式

    C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...

  6. C语言练习题

    C语言练习题 1. 以下选项中,合法的一组C语言数值常量是(     ) A)028  .5e-3  .0xf B)12.  OXa23   4.5e0 C).177   4e1.5  Oabc D) ...

  7. Standard C 语言标准函数库速查(彩色的函数列表,十分清楚)

    Standard C 语言标准函数库速查 (Cheat Sheet) wcstombs 函数说明 #include <stdlib.h> size_t mbstowcs(wchar_t * ...

  8. C语言学习004:数组与指针

    在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的

  9. C语言中的数组的一些笔记

    C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...

随机推荐

  1. 关于js数组的简单复制

    var a=[]; a.push(1); a.push(2); a.push(3); var b=a; b[0]=4; alert(a);//4,2,3 alert(b);//4,2,3 这种写法由于 ...

  2. Linux Network Command

    查看 内外网访问ipnetstat -an download file from server scp -r root@139.xxx.xxx.82:~/virtualbox.box /tmp/

  3. 踩坑学习python自动化测试第二天!

    class put_out(object): def Helloword(str): print(str) Hello,Inder,Pist ="", [],{} word= st ...

  4. Shell bash 数学运算 bc

    1.bc命令可以完成浮点数的运算.其中 scale可以指定保留的小数点位数. 2.举例 例1: 例2:

  5. linux实时时钟相关函数

    time 功能:获取1970年1月1日00:00:00到现在的秒数 原型:time_t time(time_t *t); 参数: t:获取到的秒数 返回:获取到的秒数 说明:在time.h中定义了ti ...

  6. Java ee Turorial Hello1 Hello1.java解析

    package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped;import javax.inject.Nam ...

  7. php lcg_value与mt_rand生成0~1随机小数的效果比较

    因工作需要使用PHP生成0~1随机小数,之前写过一篇<php生成0~1随机小数方法>,基于mt_rand()及mt_getrandmax()实现. 后来有网友评论,php原生方法lcg_v ...

  8. VB Mouse Pointer

  9. 用Sqoop进行Hive和MySQL之间的数据互导

    Hive导数据入MySQL 创建mysql表 use anticheat; create table anticheat_blacklist( userid varchar(30) primary k ...

  10. DG Switch over

    DG切换迁移Switch over切换文档 本篇文档,整体结构:1.切换前检查确认2.DG切换角色操作3.切换后检查确认 目录:一.切换前检查确认1.数据库版本2.DG架构,IP信息及切换角色前后3. ...