C语言指针基础题(一)

news2024/11/29 11:44:11

目录

  • 例题一
    • 题目解析
    • 答案
  • 例题二
    • 题目解析
    • 答案
  • 例题三
    • 题目解析
    • 答案
  • 例题四
    • 题目解析
    • 答案
  • 例题五
    • 题目解析
    • 答案
  • 例题六
    • 题目解析
    • 答案
  • 例题七
    • 题目解析
    • 答案

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐓🏀 python

例题一

以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大:( )
A.32位下:4,4,2^32 64位下:8,8,2^64
B.32位下:4,4,不限制 64位下:4,8,不限制
C.32位下:4,4,2^32 64位下:4,8,2^64
D.32位下:4,4,2^32 64位下:4,4,2^64

题目解析

32位系统下:
int占4个字节,指针表示地址空间个数,总共有2^32个,故占4个字节

64位系统下:
int占4个字节,指针表示地址空间个数,总共有2^64个,故占8个字节

注意指针是表示的是地址空间,而地址会因为系统不同而不同,比如32位的系统,一个地址就需要32个比特位来表示,而指针如果想要表示这个地址的话,同样也需要32个比特位才可以,所以在32为的系统条件下,指针占32个比特位也就是4个字节

答案

答案:C

例题二

下面代码的结果是:( )

#include <stdio.h>
int main()
{
  int arr[] = {1,2,3,4,5};
  short *p = (short*)arr;
  int i = 0;
  for(i=0; i<4; i++)
  {
    *(p+i) = 0;
  }
   
  for(i=0; i<5; i++)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}

A.1 2 3 4 5
B.0 0 3 4 5
C.0 0 0 0 5
D.1 0 0 0 0

题目解析

注意数组arr一开始是整形类型的数组,而之后用short * p = (short*)arr将arr强制转换为short*,并且用short类型的指针p来接收

后面在通过*(p+1)来对数组的元素重新赋值,最后再打印

我们知道short类型的元素占2个字节,也就是16个比特位,而int类型的元素占4个字节,也就是32个比特位
因此下面是arr各元素的内存

01 00 00 00表示arr[0].02 00 00 00表示arr[1]…,

在这里插入图片描述
当我们for循环修改arr里面的元素时,过程如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

答案

答案 B

例题三

关于二级指针描述描述正确的是:( )
A.二级指针也是指针,只不过比一级指针更大
B.二级指针也是指针,是用来保存一级指针的地址
C.二级指针是用来存放数组的地址
D.二级指针的大小是4个字节

题目解析

A:二级指针是指针,不能说起比一级指针大,只能说二级指针指向的空间中存储的也是一个地址

C:数组的地址一般用一级指针存储,或者用数组指针接收

D:二级指针是指针,但是否占4个字节不一定,要看具体的系统,如果是32为的系统就是4个字节,但如果是64为的系统则是8个字节

答案

答案 B

例题四

下面关于指针运算说法正确的是:( )
A.整形指针(int*类型)+1,向后偏移一个字节
B.指针-指针得到是指针和指针之间的字节个数
C.整形指针解引用操作访问4个字节
D.指针不能比较大小

题目解析

A:整形指针+1,向后便宜一个整形类型的大小,即4个字节

B:两个指针相减,指针必须指向一段连续空间,减完之后的结构代表两个指针之间相差元素的个数

C:整形指向的是一个整形的空间,解引用操作访问4个字节

D:指针中存储的是地址,地址可以看成一个数据,因此是可以比较大小的

答案

答案 C

例题五

下面哪个是指针数组:( )
A. int* arr[10];
B.int * arr[];
C.int **arr;
D.int (*arr)[10];

题目解析

关于指针数组等相类似的如果有不懂的可以看我之前的一些文章
C语言深入理解指针(非常详细)(三)
C语言深入理解指针(非常详细)(四)
指针数组是一个数组,该数组的每个元素是一个指针

A:定义了一个数组,该数组中有10个元素,每个元素都是int*的指针类型

B:编译失败,定义数组时,要给出空间的大小,如果没有给时,必须要给出初始化结果

C:定义了一个二级指针(不用因为一个arr就认为是数组,数组在定义的时候需要 [ ] )

D:*和arr先结合,说明arr不是数组。实际上arr是一个指针,一个指向数组的指针(也就是数组指针)

答案

答案 A

例题六

下列程序段的输出结果为( )

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));

A.9,12
B.6,9
C.6,12
D.6,10

题目解析

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;

pulPtr = pulArray; // 数组名代表数组首元素地址,因此pulptr指向的是数组中第一个元素的位置

*(pulPtr + 3) += 3; // pulptr+3访问的是数组中第三个元素(数组下标从0开始)

(即 * (pulPtr + 3)=pulPtr[3], * (pulPtr + 3)+3=pulPtr[3]+3),因为一开始puPtr[3]=pulArray[3]=9,所以最后结果就是将9改为9+3=12

printf(“%d,%d\n”,*pulPtr, *(pulPtr + 3)); // 打印第一个和第三个元素,因此:打印6和12

答案

答案 C

例题七

关于指针的概念,错误的是:( )
A.指针变量是用来存放地址的变量
B.指针变量中存的有效地址可以唯一指向内存中的一块区域
C.野指针也可以正常使用
D.局部指针变量不初始化就是野指针

题目解析

A:指针变量中存储的是一个地址,指向同类型的一块内存空间

B:地址是唯一的,一个指针变量中只能存储一个地址,因此可以唯一指向内存中的一块区域

C:野指针指向的空间时非法的,或者说该指针指向的空间已经不存在了,因此野指针不能使用

D:局部指针变量没有初始化时里面就是随机值,因此指向那个位置不一定,故将其看成是野指针

答案

答案 C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1299954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制

202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制 2023/12/9 22:07 应该也可以适用于RK3399的Android12系统 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/default…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

10款装系统启动工具

1、GhostWin10 PE&#xff1a; GhostWin10 PE主要适用于安装Windows 10操作系统。它是一个基于Ghost Win10制作的PE系统&#xff0c;提供了安装Windows 10的功能 2、老毛桃PE&#xff1a; 老毛桃PE适用于各种Windows操作系统的安装和修复。它是一个基于Windows PE环境的工具…

epoll实现同时承载100w客户端的数量

概念 先表明&#xff0c;这里是让epoll能够同时承受100w的连接&#xff0c;不针对业务处理。 对于百万并发的业务处理&#xff0c;其前提条件就是要同时承受住100w的连接。 程序源码 epoll的源码直接给出来 /*支持百万并发的 reactor1.其主要限制在于Linux系统的限制,需要修改一…

小白教学!几个步骤入门AI动画视频制作

公众号&#xff1a;算法一只狗 文章目录 文本视频生成软件&#xff1a;PIKA小黑子表情包熊猫头表情包 动画视频制作故事和分镜文本制作动画生成与拼接 总结 要介绍动画生成之前&#xff0c;先让大家来看看我生成的动画视频&#xff1a; AI动画生成故事 上面的视频我只用了不到2…

Android12 WIFI 无法提供互联网连接

平台 RK3588 Android 12 问题描述 ConnectivityService是Android系统中负责处理网络连接的服务之一。它负责管理设备的网络连接状态&#xff0c;包括Wi-Fi、移动数据、蓝牙等。 在Android系统中&#xff0c;ConnectivityService提供了一些关键功能&#xff0c;包括但不限于…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

【Java期末复习资料】(2)常见例题 //持续更新

本文章主要是常见例题&#xff0c;解析不会太详细&#xff0c;有问题、不会的可以给我发消息哦&#xff0c;后续会出模拟卷 常见例题&#xff1a; 1.下列跟Java技术平台有关的是&#xff08;ABD&#xff09; A.JVM B.JDK C.JPN D.JRE 2.面向对象的特征包括&#xff08;ACD&…

uniapp实战 —— 可滚动区域 scroll-view (自适配高度,下拉刷新)

自适配高度 自定义的顶部导航栏&#xff0c;可参考博文 https://blog.csdn.net/weixin_41192489/article/details/134852124 如图可见&#xff0c;在页面滚动过程中&#xff0c;顶部导航栏和底栏未动&#xff0c;仅中间的内容区域可滚动。 整个页面的高度设置为 100%&#xf…

【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…

漏洞复现-用友NC任意文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

架构LNMP

目录 1.安装Nginx服务 2.安装 MySQL 服务 3.安装配置 PHP 解析环境 4.部署 Discuz&#xff01;社区论坛 Web 应用 1.安装Nginx服务 实验准备 systemctl stop firewalld systemctl disable firewalld setenforce 0 安装依赖包 yum -y install pcre-devel zlib-devel gcc…

Linux_CentOS_7.9 VNC安装卸载以及相关配置开机自启动服务简易记录

VNC安装卸载以及相关配置开机自启动服务&#xff1a; 查看环境&#xff1a;&#xff08;yum镜像源配置可以参考我之前文章里面有详细参考http://t.csdnimg.cn/mzGoI&#xff09; [rootorcl238 ~]# rpm -qa | grep vnc ##查看系统现有VNC软件版本 gtk-vnc2-0.7.0-3.el7.x86…

DDD领域驱动设计系列-原理篇-战略设计

概述 DDD领域驱动设计是架构方法论&#xff0c;适用于业务逻辑较复杂系统。 DDD核心目的能输出领域如何划分&#xff0c;以及架构分层如何构建。 本文章系列会分2部分讲述DDD&#xff1a;1、DDD原理&#xff1b;2、DDD实践。DDD原理分为战略及战术设计2篇来讲述&#xff1b;…

TCP/IP的体系结构

目录 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器方式 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器…

CSK6环境搭建

前期准备 开发板测试 &#xff08;1&#xff09;根据这个视频教程来进行测试&#xff1a;示例工程快速上手 Ubuntu环境搭建 &#xff08;1&#xff09;聆思官方推荐使用Linux开发&#xff0c;因此我于是采用VMware搭建Ubuntu的方式进行开发。不清楚Ubuntu搭建的请看&#xff1…

Linux——缓冲区与实现C库的fopen,fwrite,fclose

目录 一.缓冲区 1缓冲区的概念 2.缓冲区存在的意义 3.缓冲区刷新策略 4.什么是刷新&#xff1f; C语言的缓冲区在哪里&#xff1f; ​编辑 仿写C库里的fopen&#xff0c;fclose&#xff0c;fwrite。 mystdio.h mystdio.c main.c(向文件中写入20次msg) 一.缓冲区 1…

stack容器

stack容器 文章目录 stack容器一、头文件二、stack基本概念三、stack常用接口 一、头文件 #include <stack>二、stack基本概念 概念: stack是一种先进后出(First In Last Out,FILO)的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界使用&#xff0…

C++『异常』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1.异常基本概念1.1.C语言异常处理方式1.2.C异常处理方式 2.异常的使用2.1.异常…

perl单行命令统计项目中代码单行过长的信息

项目中单行代码太长是不便于阅读和维护的&#xff0c;这里用perl单行命令实现项目中的单行过长的代码信息统计&#xff0c;方便修改。为方便说明&#xff0c;这里以一个开源项目为例&#xff0c;github链接evpp。以commit id 477033f938fd47dfecde43c82257cd286d9fa38e 为例&am…