首页 > 其他分享 >指针T_T 练习

指针T_T 练习

时间:2024-09-10 08:55:01浏览次数:10  
标签:p2 p1 int 练习 char ++ 指针

  1. 用变量a给出下面的定义(3C科技、宇视科技,神思电子,中安云科,北京凝思软件)

a) 一个整型数: int a;

b) 一个指向整型数的指针:int *a=NULL

c) 一个指向指针的的指针,它指向的指针是指向一个整型数:

 int **a=NULL

d) 一个有10个整型数的数组:int a[10]={0};

e) 一个指向有 10个整型数数组的指针:int b[10]; int *a=b;

  1. 在 int a = 3, int *p = &a;中,*p 的值是( ) (华辰泰尔)
  1. 变量 a 的地址值;
  2. 无意义;
  3. 变量 p 的地址值;
  4. 3

  1. 下列定义中,( )是定义了一个指向数组的指针p。(矩阵软件)
  1. int(*p)[7]
  1. int *p[7]

C. (int *)p[7]

D. int *p[]

  1. 有以下说明语句,则正确的赋值语句是()。(山大华天)

int a[5][5]; int *p, **q;

A. p = a;

B. q = *a;

C. q = a;

D. p = *a;

  1. 设 char *s1, *s2; 分别指向两个字符串,可以判断字符串 s1 和 s2 是否相等的表达式为( ) (山大华天)

A. s1 = s2

B. s1 == s2

C. strcpy(s1, s2) == 0;

D. strcmp(s1, s2) == 0;

  1. 求 n 的值。n=___20_。(山东丁一)

int a[20];

char *p1 = (char *)a;

char *p2 = (char *)(a+5);

int n = p2-p1;

分析:原本a是整型数组,相隔五个整型相当于20个字节,char *类型的指针指向的地址相隔一个字节,有n等于20。

  1. 若有说明int(*p)[3],以下叙述正确的是( ) (杭州快越科技)

A. p是指针数组

B. (*p)[3]和 *p[3]等价

C. p是指向一维数组中任何一个元素的指针

D. p是指向含有3个整形元素的一维数组的指针

  1. 设数组a[5]=(10,20,30,40,50)已知指针p指向a[1],则表达式*++p的值是 ( ) (杭州快越科技)

A. 31             B. 30          C. 21          D. 20

  1. 有以下程序段,执行后,mul的值为( ) (杭州快越科技)

int a[] = {1, 3, 5, 7, 9};

int mul,*data, x;

mul=1;

data=&a[1];

for(x=0; x<3; x++)

{

    mul *= *(data+x); //3*5*7=105

}

printf("%d\n", mul);

A. 945            B. 315              C. 105              D. 15

  1. 在32位计算机系统上,以下代码的输出结果是什么?(泰华智慧)

int *a;

char *b;

char c[20];

printf("%d, %d, %d", sizeof(a),  sizeof(b), sizeof(c));

 输出:4,8,20

  1. 有以下定义:(华三外协,紫光云数,山东信通电子,新华三,石峰)

int a[]={1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10}, *p = a

下列哪个表达式的值为3:( )

A. p += 2, *(p++)             B. p += 2, *++p

C. p += 3, *p++                D. p += 2, ++*p

  1. 若已定义:int a[6], *p = a, 不能表示 a[1] 地址的表达式是:(云尖软件开发,紫光云数,智洋创新,新华三,石峰)

A. p+1           B. a+1               C. a++        D. ++p

 a++是先赋值在加一

  1. .有定义: int x, *p;能使指针变量P指向变量x的语句是:________ (智洋)

A. *p=&x;           B. p=&x;           C. *p=x;            D. p=*&x;

  1. 若有说明int a=2, *p=&a, *q=p;则以下非法的赋值语句是( )。 (智洋)

A. p=q          B. *p=*q          C. a=*q              D. q=a

  1. 请写出输出结果 (晟安信息)

int main()

{

    int a[10] = {0};

    int *p = a;

    int *q = &n[6];

    printf("%d\n", q-p);

    printf("%d\n", (int)q - (int)p);

}

6  24

第一个6是元素个数差,而第二个每个元素之间是4字节,所有相差24。

  1. 下面的程序输出的结果是__________ (飞音时代)

#include <stdio.h>

int a[] = {0, 2, 4, 6, 8};

main()

{

    int i;

    int *p = a;

    for(i = 0; i < 4; i++) a[i] = *p++;

    printf("%d\n", a[2]);

}

4

分析:p=a,当循环开始时,i等于0 a[0]=*p++。由于++是后缀,所有先赋值再++。所以数组内容不变。

  1. 数组声明为:short a[3][4],引用第3行第1列的元素写作________。(富士安全)

a. **(a+2)           b. *(*a+2)               c. a[3][1]          d. *(a[3]+1)

A相当于*(*(a+2)+0)就是第三行第一列

B相当于*(*(a+0)+2)

C、D数组越界

  1. 指针变量p1和p2类型相同,要使p1,p2指向同一个变量,正确的是________。(富士安全)

a. p2=*&p1               b. p2=**p1            c. p2=&p1              d. p2=*p1

分析:&和*互为逆运算

  1. 下列哪个引用是不正确的? (中维世纪)

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

A. a[p-a];     B. *(&a)    C. p;    D. *(*(a+i));

a[10]是一维数组,不需要两次解引用

  1. 下面程序的结果是多少? (中科四平)

p1=(unsigned char *)0x801000;

p2=(unsigned long *)0x810000;

请问:

p1+5=0x801005

p2+5=0x810028

  1. 请写出以下程序输出内容。(小端环境) (信雅达)

void main()

{

    int a[4] = {1, 2, 3, 4};

    int *p1 = (int *)(&a +1);

    int *p2 = (int *)((char *)a + 1);

    printf("0x%x, 0x%x", *(p1-1), *p2);

}

0x4 0x2000000

标签:p2,p1,int,练习,char,++,指针
From: https://blog.csdn.net/qq_53841892/article/details/142068903

相关文章

  • C语言阶段练习题
    题目一:(25分)题目描述:输入终值,输出所有能被7整除的数值及其和数据展示: 代码展示:#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){inta,sum=0,m=0;         //定义输入值,求和值,以及判断换......
  • 字符数组练习
    下列对C语言字符数组的描述中错误的是()(鲁科安全)A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.不可以用关系运算符对字符数组中的字符串进行比较D.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值分析:字符数组不能通过赋值运算符......
  • C10-04-1-历史漏洞环境搭建和练习
    一、TomcatPUT方法任意写文件漏洞(CVE-2017-12615)1.1漏洞原理ApacheTomcat7.0.0版本至7.0.79版本存在远程代码执行漏洞。当上述版本的Tomcat启用HTTPPUT请求方法时,远程攻击者可以构造恶意请求利用该漏洞向服务器上传包含任意代码执行的jsp文件,并被服务器执行该文件,导致......
  • 手把手带你拿捏指针(1)
    文章目录一、内存和地址1.内存编号、地址和指针的关系2.对于编址的理解二、指针变量和地址1.取地址操作符&2.指针变量3.解引用操作符(*)4.指针变量的大小三、指针变量类型的意义1.指针解引用2.指针+-整数3.void*指针四、const修饰指针1.const修饰变量2.const修饰指针......
  • 练习 day2
    name=input('输入姓名')ifname=='kk':print('hellokk')ifname=='k':print('hik')name=input('输入姓名')ifname=='kk':print('hellokk')else:print('fxxk')gif......
  • C语言程序设计-练习篇
    不知道结果仍义无反顾地才是勇士。三,打印整数二进制的奇数位和偶数位题目内容:获取一个整数二进制序列中所有的奇数位和偶数位,分别打印出二进制序列#include<stdio.h>//打印整数二进制的奇数位和偶数位intmain(){ inti=0; intnum=0; scanf("%d",&num); //......
  • oj刷题——双指针篇:双指针的原理和使用场景
    前言:双指针一般在做与数组有关的题是经常容易用到的,在很多场景下都能得到很好的应用,下面我将通过多个多指针的题(力扣上面的),来总结一下双指针的原理和使用场景需知:我在讲解一个题时主要分为三步:题意解析、讲解算法原理和编写代码目录一.复写0二、快乐数三、盛最多水的......
  • 题单3:基础练习(rating1000)
    题单1A:TheatreSquare数学问题118A:StringTask字符串处理。在体量较小的情况下,用多个cout语句打印可以节省代码时间。倘若体量较大,一般需要用char[]先存储需要打印的内容,最后再一次性打印。本题属于前者。58A:Chatroom字符串处理。可以事先存储需要匹配的序列char[6]......
  • 题单2:基础练习
    小技巧int型整数所能表示的范围较少,因此当需要精确的表示大数时,建议使用longlongint为便于使用,可以采用宏定义#defineINTlonglongint更好的做法是使用cstdint库中的int64_t类型#include<cstdint>int64_tmyVariable=1234567890123456789LL;题单96A:Football......
  • C语言指针篇
    一.指针的本质        指针的本质就是有类型的地址。地址指的是地址总线上的地址码表,而类型决定了我们操作这个指针时,要从这个地址码上读写的长度。即指针的类型决定读写一个地址块的数据长度(1字节、2字节、4字节还是结构体定义的长度)。        比如(uint8_t......