有如下语句 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. VMware 物理机可以复制文件到虚拟机,却无法从虚拟机复制文件到物理机(已解决)

    物理机运行,输入gpedit.msc确定,把如图的那个改成“已禁用” 之后虚拟机重新安装VMware Tool重启即可 事情是这样的,每次打开IDM会 “警告:您在以管理员身份运行IDM,在该模式下, ...

  2. Hacklab综合关

    没有注入到底能不能绕过登录 分值: 350 不是SQL注入 通关地址   不是注入,就先扫一下后台,发现在robots.txt后面有 访问一下,发现要先登陆,用burpsuit爆了好久都没有成功,最后 ...

  3. pytest自动化4:fixture之yield实现teardown

    出处:https://www.cnblogs.com/yoyoketang/p/9401554.html 前言: 上一篇介绍了fixture通过scope参数控制setup级别,我们一起来温故下fix ...

  4. css实现文本块在容器中垂直居中

    效果如图: css代码: .textContainer { display: -webkit-box; -webkit-box-orient: vertical; -webkit-box-pack: ...

  5. 精进之路之HashMap

    HashMap本质的核心就是“数组+链表”,数组对于访问速度很快,而链表的优势在于插入速度快,HashMap集二者于一身. 提到HashMap,我们不得不提各个版本对于HashMap的不同.本文中先从 ...

  6. shell版的nginx安装

    #!/bin/bash # Name:Centos 6.4 安装nginx1.8.1 # Date:-- # Author:qifei@meizu.com Home=$(cd ``;pwd) #这个命 ...

  7. C\C++控制台程序隐藏方法总结

    学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面.对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台, ...

  8. Go Lang

    IDE: https://www.jetbrains.com/products.html?fromMenu#type=ide Study: http://www.runoob.com/go/go-en ...

  9. 点击iframe窗口里的超链接,打开新页面的方式

    点击iframe窗口里的超链接打开新页面的方式: a标签中设置按钮点击事件,事件调用的方法使用如下方法跳转链接:  window.open('url链接', '_blank');

  10. git教程:管理修改

    转载:管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行 ...