指针练习题

一.选择题

1.变量的指针,其含义是指该变量的    B        。

A)值               B)地址             C)名               D)一个标志

2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是  B  。

A)k=*ptr1+*ptr2     B)ptr2=k            C)ptr1=ptr2          D)k=*ptr1*(*ptr2)

3.若有说明:int *p,m=5,n;以下程序段正确的是      D        。

A)p=&n ;                                B)p = &n ;

 scanf(“%d”,*p);                       scanf(“%d”,&p);                                     

C)scanf(“%d”,&n);                        D)p = &n ;

   *p=n ;                              *p = m ;

4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是  D           。

void print_value(int *x)

{  printf(“%d\n”,++*x); }

A)23               B)24               C)25               D)26

5.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项有哪些      C     。

A)p1=&m; p2=&p1 ;         B)p1=&m; p2=&n; *p1=*p2 ;

C)p1=&m; p2=p1 ;          D)p1=&m; *p1=*p2 ;

6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是        D     。

A)a,p,*&a           B)&*a,&a,*p        C)*&p,*p,&a        D)&a,&*p,p

7.下面判断正确的是      C       。

A)char *a=”china”; 等价于 char *a; *a=”china” ;

B)char str[10]={“china”}; 等价于 char str[10]; str[ ]={“china”;}  

C)char *s=”china”; 等价于 char *s; s=”china” ;

D)char c[4]=”abc”,d[4]=”abc”; 等价于 char c[4]=d[4]=”abc” ;

8.下面程序段中,for循环的执行次数是  B         。

char *s=”\ta\018bc”     \01等价于\1 0表示八进制前导符,\01  --\08  都是2个字节   \09就是3个字节

for (  ; *s!=’\0’ ; s++)  printf(“*”) ;

A)2                B)7                C)6                D)5

9.下面能正确进行字符串赋值操作的是   C         。

A)char s[5]={“ABCDE”};  

B)char s[5]={‘A’,’B’,’C’,’D’,’E’};

C)char *s ; s=”ABCDE” ;                  D)char *s; scanf(“%s”,s) ;

10.下面程序段的运行结果是    C        。

char *s=”abcde” ;

s+=2 ; printf(“%d”,s);

A)cde              B)字符’c’           C)字符’c’的地址     D)98

11.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是       B       。

A)c=*p1+*p2        B)p2=c             C)p1=p2            D)c=*p1*(*p2)

12.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是    D         。

A)s和p完全相同

B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

13.以下与库函数strcpy(char *p1,char *p2)功能不相等的程序段是       D       。

A)strcpy1(char *p1,char *p2)

   { while ((*p1++=*p2++)!=’\0’) ; }

B)strcpy2(char *p1,char *p2)

   { while ((*p1=*p2)!=’\0’) { p1++; p2++ } }

C)strcpy3(char *p1,char *p2)

   { while (*p1++=*p2++) ; }

D)strcpy4(char *p1,char *p2)

   { while (*p2) *p1++=*p2++ ; }

14.下面程序段的运行结果是       C     。

   char a[ ]=”language” , *p ;

   p=a ;

   while (*p!=’u’) { printf(“%c”,*p-32); p++ ; }

A)LANGUAGE       B)language            C)LANG             D)langUAGE

16.以下与库函数strcmp(char *s,char *t)功能相等的程序段是     C         。

A)strcmp1(char *s,char *t)

   {  for ( ; *s++=*t++; )

if (*s= =’\0’)

 return 0 ;

return (*s-*t) ;

   }

B)strcmp2(char *s,char *t)

   {  for ( ; *s++=*t++; )

        if (!*s) return 0 ;

return (*s-*t) ;

   }

C)strcmp3(char *s,char *t)

   {  for ( ; *t= =*s; )

        { if (!*t) return 0 ; t++ ; s++ ; }

return (*s-*t) ;

   }

D)strcmp4(char *s,char *t)

   {  for ( ; *s==*t; s++, t++ )

        if (!*s) return 0 ;

return (*t-*s) ;

   }

17.以下说明不正确的是       D      。

A)char a[10]=”china” ;                         

B)char a[10],*p=a; p=”china”;

C)char *a; a=”china” ;                          

D)char a[10]; a=”china”; 

18.设有说明语句:char a[]=”It is mine”;char *p=”It is mine”;则以下不正确的叙述是     D         。

A)a+1表示的是字符t的地址                   

B)p指向另外的字符串时,字符串的长度不受限制

C)p变量中存放的地址值可以改变

D)a中只能存放10个字符

19.若已定义char s[10];则在下面表达式中不表示s[1]的地址是     B        。

A)s+1               B)s++              C)&s[0]+1            D)&s[1]

20.若有定义:int a[5],*p=a;则对a数组元素的正确引用是     D         。

A)*&a[5]            B)a+2              C)*(p+5)              D)*(a+2)

21.若有定义:int a[5],*p=a;则对a数组元素地址的正确引用是     D       。

A)p+5               B)*a+1             C)&a+1              D)&a[0]

22.若有定义:int a[2][3];则对a数组的第i行第j列元素值的正确引用是   A    。

A)*(*(a+i)+j)         B)(a+i)[j]             C)*(a+i+j)          D)*(a+i)+j  

23.若有定义:int a[2][3];则对a数组的第i行第j列元素地址的正确引用是  D     。

A)*(a[i]+j)           B)(a+i)              C)*(a+j)          D)a[i]+j

24.若有程序段:int a[2][3],(*p)[3]; p=a;则对a数组元素地址的正确引用是    C    。

A)*(p+2)            B)p[2]               C)p[1]+1             D)(p+1)+2

25.若有程序段:int a[2][3],(*p)[3]; p=a;则对a数组元素的正确引用是      C      。

A)(p+1)[0]           B)*(*(p+2)+1)        C)*(p[1]+1)           D)p[1]+2

26.若有定义:int a[5];则a数组中首元素的地址可以表示为      C      。

A)&a               B)a+1               C)a                  D)&a[1]

27.若有定义:int (*p)[4];则标识符p     C       。

A)是一个指向整型变量的指针

B)是一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组

D)定义不合法

28.以下与int *q[5];等价的定义语句是   C        。

A)int q[5]           B)int *q              C)int *(q[5])           D)int (*q)[5]

29.以下正确的说明语句是      B       。

A)int *b[]={1,3,5,7,9} ;

B)int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

C)int a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};

D)int a[3][4],(*num)[4] ; num[1]=&a[1][3];

30.若有定义:int b[4][6],*p,*q[4];且0≤i<4,则不正确的赋值语句是    B      。

A)q[i]=b[i];         B)p=b;               C)p=b[i];              D)q[i]=&b[0][0]

32.若要对a进行自减运算,则a应有下面说明      D       。

A)int p[3]; int *a=p;          B)int k; int *a=&k;             C)char *a[3]            D)int b[10]; int *a=b+1;

33.以下选项中,对指针变量p的正确操作是    B     。

A)int a[3], *p; p=&a;      B)int a[5], *p; p=a;       

C)int a[5];int *p=a=100;             

D)int a[5]; int *p1,*p2=a;  *p1=*p2;

                                                        

34.若有定义:int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是   C   。

A)x[3]                        B)p1=x+3,*p1++

C)p1=x+2,*(p1++)               D)p1=x+2,*++p1

35.下面程序段的输出是    C         。

int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;

for (k=0; k<4; k++) q[k]=&a[k*3];

printf(“%d\n”,q[3][0]);

A)22               B)16                C)20                  D)输出不合法

36.若要对a进行自增运算,则a应具有下面说明       D      。

A)int a[3][2];                   B)char *a[ ]={“12”,”ab”};

C)char (*a) [3]                D)int b[10], *a=b;

37.若有定义int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式      A       。

A)&a[0][0]+6*i+j      B)&a[0][0]+4*j+i

C)&a[0][0]+4*i+j      D)&a[0][0]+6*j+I

38.下面程序的运行结果是       B      。

main ( )

{  int x[5]={2,4,6,8,10}, *p, **pp ;

   p=x , pp = &p ;

   printf(“%d”,*(p++));

   printf(“%3d”,**pp);

}

A)4  4            B)2  4              C)2  2                D)4  6

39.若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ; 则能够正确表示数组元素x[1][2]的表达式是      D       。

A)*((*p+1)[2])                           B)(*p+1)+2

C)*(*(p+5))                             D)*(*(p+1)+2)

40.若有说明:char *language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则language[2]的值是    B         。

A)一个字符        B)一个地址          C)一个字符串          D)一个不定值

41.设有定义:char *cc[2]={“1234”,”5678”};则正确的叙述是      A      。

A)cc数组的两个元素中各自存放了字符串”1234”和”5678”的首地址

B)cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

C)cc是指针变量,它指向含有两个数组元素的字符型一维数组

D)cc元素的值分别维”1234”和”5678”

请说明二维数组行偏移,列偏移。(7分)  *(*(a+i)+j)
例如:int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}

Int (*p)[4]=arr;

假设arr首地址是 0x1020    指针p自身的地址是0x600

请回答:

arr+1 地址是:0x1030

arr[0]+2 地址是: 0x1024

*(arr+2)+3的地址是: 0x1048

p+2的地址是:0x1040

*(p+1)的地址是: 0x1030

*(p+1)+1的地址是: 0x1034

&p+2的地址是:0x610

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

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

相关文章

【深入理解DETR】DETR的原理与算法实现

1 DETR算法概述 ①端到端 ②Transformer-model 之前的方法都需要进行NMS操作去掉冗余的bounding box或者手工设计anchor&#xff0c; 这就需要了解先验知识&#xff0c;增加从超参数anchor的数量&#xff0c; 1.1 训练测试框架 一次从图像中预测n个object的类别 训练阶段我们…

Attention Is All Your Need论文翻译

0.摘要 这个统治序列转换模型是基于复杂循环或者卷积神经网络&#xff0c;它包含编码器和解码器。表现最好的模型也通过注意力机制来连接编码器和解码器。我们提出了一个新的简单网络架构——Transformer,它仅仅是是基于注意力机制&#xff0c;完全免去递推和卷积。在两个机器…

C语言——函数(第五讲)(上)

C语言——函数&#xff08;第五讲&#xff09; 前言函数的概念库函数标准库和库函数库函数的使用方法 ⾃定义函数形式形参和实参形参和实参的关系 前言 Hello,各位C语言的小伙伴们&#xff0c;大家过年好&#xff0c;我是莹莹。停更差不多一个月了&#xff0c;都是懒惰作怪&am…

C#面:利用 operator 声明且仅声明了 == ,有什么错误吗?

仅声明 是错误的&#xff0c;还要声明 ! 。 如果要重载一个运算符&#xff0c;就必须同时重载一组相关的运算符。因为运算符之间存在一些预定义的关系&#xff0c;需要同时进行重载以保持一致性。 public class MyClass {public int Value { get; set; }public static bool …

学习总结16

# 【模板】最小生成树 ## 题目描述 如题&#xff0c;给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出 orz。 ## 输入格式 第一行包含两个整数 N,M&#xff0c;表示该图共有 N 个结点和 M 条无向边。 接下来 M 行每行包含三个整数 …

9 个管理 Windows 硬盘的最佳免费磁盘分区软件 [2024 排名]

管理分区可能是一项具有挑战性的任务。当您想到删除、缩小、移动、磁盘分区或合并分区等方面时&#xff0c;您会认为它们是很难做到的事情。然而&#xff0c;虽然 Windows 自己的磁盘管理可以处理大部分问题&#xff0c;但它无法处理管理分区的所有方面。 这时候优质的磁盘管理…

python-游戏篇-初级-超级画板

文章目录 开发环境要求运行方法PyCharmVScode 代码main.pytools.py 效果 开发环境要求 本系统的软件开发及运行环境具体如下。 操作系统&#xff1a;Windows 7、Windows 10。Python版本&#xff1a;Python 3.7.1。开发工具&#xff1a;PyCharm 2018。Python内置模块&#xff…

uniapp中打开蓝牙需要哪些权限

在uniApp中进行蓝牙连接&#xff0c;需要获取以下权限&#xff1a; 蓝牙权限&#xff1a;用于扫描和连接蓝牙设备。定位权限&#xff1a;用于获取设备的位置信息&#xff0c;以便确定设备与蓝牙设备之间的距离。存储权限&#xff1a;用于读取和写入与蓝牙设备相关的数据。 获…

秒懂百科,C++如此简单丨第十九天:动态规划

目录 动态规划的初步理解 求最短路径数 洛谷 P1002 过河卒 题目描述 输入样例 输出样例 思路 AC Code 动态规划的初步理解 什么是动态规划&#xff1f;最直白的理解就是动态的规划。 那高级一点的理解呢&#xff1f;就是每时每刻都拿着一个小本本&#xff0c;也就是…

「优选算法刷题」:和可被K整除的子数组

一、题目 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 解释&…

C语言-----函数功能实现---strcpystrlen

1.函数功能参数介绍 该函数的功能就是把一个字符串复制到另外的一个数组&#xff0c;包括\0&#xff1b; 2.首先我们要明确字符串的复制也是包括最后的\0的&#xff1b; void mystrcpy(char* dest, char* src) {while (*src!\0){*dest *src;dest;src;}*dest *src;} int mai…

HGAME 2024 WEEK2 WP

文章目录 WEBWhat the cow say?Select More Coursesmyflask CryptomidRSAmidRSA revengebackpackbackpack revengebabyRSA奇怪的图片plus MISC我要成为华容道高手ek1ng_want_girlfriendezWord龙之舞 回老家了&#xff0c;初七晚上才回去&#xff0c;估计week3前几天不怎么能做…

类加载过程介绍

一、类的生命周期 类被加载到jvm虚拟机内存开始&#xff0c;到卸载出内存为止&#xff0c;他的生命周期可以分为&#xff1a;加载->验证->准备->解析->初始化->使用->卸载。 其中验证、准备、解析统一称为链接阶段 1、加载 将类的字节码载入方法区中&#xf…

docker (一)-简介

1.什么是docker Docker 是一个开源的应用容器引擎&#xff0c;由于docker影响巨大&#xff0c;今天也用"Docker" 指代容器化技术。 2.docker的优势 一键部署&#xff0c;开箱即用 容器使用基于image镜像的部署模式&#xff0c;image中包含了运行应用程序所需的一…

Selenium实战教程系列(二)---元素定位

Selenium webdriver能够模拟人对浏览器进行操作的前提是界面元素的定位。元素的定位可以说是Selenium自动化脚本的基础。这一小节笔者将介绍如何在selenium中进行元素的定位。 定位元素的方法 Selenium中提供了以下定位元素的方法&#xff1a; 首先看一个HTML文件 test_page.…

(14)Hive调优——合并小文件

目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一&#xff1a;insert overwrite (推荐) 3.2.2 方式二&#xff1a;concatenate 3.2.3 方式三&#xff…

假期作业 12

1.整理tar指令打包压缩和解压的使用、复习file、head、tail和管道符的使用 tar 打包并压缩/拆包并解压缩 打包&#xff1a;多个文件合并成一个文件 拆包&#xff1a;把多个文件拆出来 tar指令执行结束后&#xff0c;源文件存在 借助tar指令&#xff0c;可以完成目录文件的…

ABC340 A-F题解

文章目录 A题目AC Code&#xff1a; B题目AC Code&#xff1a; C题目AC Code&#xff1a; D题目AC Code&#xff1a; E题目思路做法时间复杂度AC Code&#xff1a; F题目思路AC Code&#xff1a; A 题目 模拟即可&#xff0c;会循环都能写。 AC Code&#xff1a; #include …

OpenMVG(特征匹配、照片组重建点云、GPS位置信息、GMS)

目录 1 图像的特征匹配 2 图像中提取GPS位置信息 2.1 写入GPS信息到图像中 2.2 读取带有GPS的图像 3 SIFT/AKAZE/AKAZE_MLDB特征提取对比 4 GMS Filter 5 将球形全景图转换为6个透视视图 6 照片组重建点云 1 图像的特征匹配 #include "openMVG/features/feature.…