广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言利用面试真题理解指针的使用
  • 115
分享到

C语言利用面试真题理解指针的使用

C语言指针C语言面试指针 2022-11-13 13:11:53 115人浏览 薄情痞子
摘要

目录前言笔试题一笔试题二笔试题三笔试题四笔试题五笔试题六笔试题七笔试题八前言 大家好~我又来了,今天给大家带来的是指针的几道笔试题,希望能够加强大家对指针知识的把握,指针就应该这样学

前言

大家好~我又来了,今天给大家带来的是指针的几道笔试题,希望能够加强大家对指针知识的把握,指针就应该这样学!

笔试题一

#include<stdio.h>
int main()
{
	int a[5] = { 1 , 2 , 3 , 4 , 5 };
	int* ptr = (int*) (&a + 1);
	printf("%d, %d", *(a + 1), *(ptr - 1));
	return 0;
}

1.&a取出的是整个数组的地址,&a+1是跳过一个类型为int(* )[5]的数组。

2.a不是单独放在sizeof内,并且数组名a前面没有取地址符号,此时a表示首元素的地址。a+1时跳过一个类型为int的整型,即为第二位元素地址。

3.ptr-1是跳过一个类型为int的整型。

4.( * )(a+1)–>a[1];*(ptr-1)–>ptr[-1]。

笔试题二

#include<stdio.h>
//结构体大小是20个字节
struct Test
{
	int Num;
	char* pcName;
	 short sDate;
	char cha[2];
	short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
//x86环境下
int main()
{
	printf("%p\n", p + 0x1);
	//0x100000+20-->0x100014
	//p+1表示跳过一个结构体,一个结构体的大小为20个字节
	printf("%p\n", (unsigned long) p + 0x1);
	//0x100000+1-->0x100001
	//将p强制转换成一个整型之后加1
	printf("%p\n", (unsigned int*) p + 0x1);
	//0x100000+4-->0x100004
	//p+1表示跳过一个类型为unsigned int的整型,即四个字节
	return 0;
}

笔试题三

#include<stdio.h>
int main()
{
	int a[4] = { 1 , 2 , 3 , 4 };
	int* ptr1 = (int*) (&a + 1);
	int* ptr2 = (int*) ((int) a + 1);
	printf("%x, %x", ptr1[-1], *ptr2);
	return 0;
}

1.ptr[-1]相当于 * (ptr-1)

2.&a取出的是整个数组的地址,&a+1是跳过一个类型为int(*)[4]的数组。

3.a不是单独放在sizeof内,并且数组名a前面没有取地址符号,此时a表示首元素的地址。a进行了强制类型转化成int,a+1进行整型之间相加,再进行强制转化成指针,跳过了一个字节,一个int类型大小为4个字节,而数据进行的是小端存储,故由指向01的指针,指向了00。而prt2的访问权限是访问4个字节,故ptr2访问的是0x02000000。

笔试题四

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

因为int a[3][2] = {(0,1),(2,3),(4,5)}是逗号表达式。

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

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

a[0]是第一行的数组名,a[0]表示首元素的地址,即a[0][0]的地址,&a[0][0].

笔试题五

#include<stdio.h>
int main()
{
    int a[5][5];
    int(*p)[4];
    p = a;
    printf("%p,%d\n ", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
    return 0;
}

1.p[4][2]相当于*(*(p+4)+2)。

2.两指针相减,得到的是两个指针之间的元素个数。

3.%p直接打印的是补码,地址被认为是无符号整型。

笔试题六

#include<stdio.h>
int main()
{
	int aa[2][5] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
	int* ptr1 = (int*) (&aa + 1);
	int* ptr2 = (int*) (*(aa + 1));
	printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
	return 0;
}

1.* (aa+1)相当于aa[1],表示第二行的数组名。

2.&aa取出的是整个数组的地址,&aa+1是跳过一个类型为int(*)[2][5]的数组。

3.aa不是单独放在sizeof内,并且数组名aa前面没有取地址符号,此时aa表示第一行的数组名,aa+1表示第二行的数组名。

笔试题七

#include<stdio.h>
int main()
{
	char* a[] = { "work" , "at" , "alibaba" };
	char** pa = a;
	pa++;
	printf("%s\n", *pa);
	return 0;
}

pa++是跳过一个类型为char*的指针。

笔试题八

#include<stdio.h>
int main()
{
	char* c[] = { "ENTER" , "NEW" , "POINT" , "FIRST" };
	char** cp[] = { c + 3 , c + 2 , c + 1 , c };
	char*** cpp = cp;
	printf("%s\n", **++cpp);
	printf("%s\n", *--*++cpp + 3);
	printf("%s\n", *cpp[-2] + 3);
	printf("%s\n", cpp[-1][-1] + 1);
	return 0;
}

1.*cpp[-2]相当于 * ( * (cpp-2))。

2.cpp[-1][-1]相当于 * ( * (cpp-1)-1)

到此这篇关于C语言利用面试真题理解指针的使用的文章就介绍到这了,更多相关C语言指针内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言利用面试真题理解指针的使用

本文链接: https://www.lsjlt.com/news/171325.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言利用面试真题理解指针的使用
    目录前言笔试题一笔试题二笔试题三笔试题四笔试题五笔试题六笔试题七笔试题八前言 大家好~我又来了,今天给大家带来的是指针的几道笔试题,希望能够加强大家对指针知识的把握,指针就应该这样学...
    99+
    2022-11-13
    C语言 指针 C语言 面试 指针
  • C语言指针笔试题全面解析
    目录前言一、指针笔试题 1.题目如图:2.题目如图: 3.题目如图:4.题目如图:   5.题目如图:6.题目如图:7.题目如图:&...
    99+
    2022-11-12
  • C语言常见的指针笔试题解析
    目录笔试题1笔试题2笔试题3笔试题4笔试题5笔试题6笔试题7笔试题8在我们学习指针之后,应该在实际应用中去理解和掌握它,毕竟实践才是检验真理的唯一标准,我们以后在找工作的过程中免不了...
    99+
    2022-11-13
    C语言指针笔试题解析 C语言指针笔试题 C语言指针
  • C语言sizeof和strlen的指针和数组面试题详解
    目录一、概念         sizeof:strlen:二、例题及解析2.1 一维数组2.2 字符数...
    99+
    2022-11-13
  • C语言清楚了解指针的使用
    目录前言字符指针指针数组数组指针函数指针前言 经过了指针的初步学习,我们了解了指针有以下特点: 1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2. 指针的大小是固定...
    99+
    2022-11-13
  • C语言浅析指针的使用
    目录指针等价形式转换函数指针主函数指针 指针是一个变量 (1) 作用:只能存储地址的值 (2) 大小:32位操作系统中占4字节;64位操作系统中占8字节 (3) 取地址:& ...
    99+
    2022-11-13
  • C语言指针使用的方法
    这篇文章主要介绍了C语言指针使用的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言指针使用的方法文章都会有所收获,下面我们一起来看看吧。指针指针是一个变量(1) 作用:只能存储地址的值(2) 大小:32...
    99+
    2023-07-02
  • C语言详解函数与指针的使用
    目录一、函数类型二、函数指针三、回调函数四、小结一、函数类型 C 语言中的函数有自己特定的类型 函数的类型由返回值,参数类型和参数个数共同决定,如 int add(int i, in...
    99+
    2022-11-13
  • C语言超详细讲解指针的使用
    目录指针概述自身类型指向类型代码例子数值型指针字符型指针单字符字符数组字符串型指针字符数组总结指针概述 C语言中指针也可以认为是一种类型,不同于数值型和字符型的类型。推演过去指针变量...
    99+
    2022-11-13
  • C语言学习之指针的使用详解
    目录一、指针概念1.指针变量2.指针类型3.二级指针二、野指针1.野指针成因2.规避野指针三、指针运算1.指针±整数2.指针-指针3.指针关系运算四、指针数组1.指针和...
    99+
    2022-11-13
    C语言指针使用 C语言指针
  • C语言全方位讲解指针的使用
    目录一、指针的概念1.1、变量和地址1.2、指针变量和指针的类型二、指针变量2.1、指针变量的定义及使用2.2、指针运算三、野指针3.1、概念:3.2、野指针的成因3.3、如何规避野...
    99+
    2022-11-13
  • C语言中指针的使用示例
    这篇文章给大家分享的是有关C语言中指针的使用示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、指针的作用运用指针可以有效地表达一些复杂地数据结构,比如系统地动态分配内存、消息机制、任务调度、定时器等等。掌握指...
    99+
    2023-06-29
  • C语言中的指针怎么使用
    这篇文章主要介绍“C语言中的指针怎么使用”,在日常操作中,相信很多人在C语言中的指针怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中的指针怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-17
  • C语言中指针的使用案例
    这篇文章主要介绍C语言中指针的使用案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、利用指针倒序字符串void _reversal(char* left, char* ri...
    99+
    2023-06-29
  • C语言深入浅出讲解指针的使用
    目录一、利用指针倒序字符串二、题目实例三、总结一、利用指针倒序字符串 void _reversal(char* left, char* right) { while (lef...
    99+
    2022-11-13
  • C语言简明介绍指针的使用
    目录1. 指针类型2. 野指针3. 指针的运算3.1 指针+-整数3.2指针-指针3.3 指针的关系运算4. 指针数组1. 指针类型 指针以字节为单位; 指针类型决定了解引用时能访问...
    99+
    2022-11-13
  • C语言函数的参数使用指针
    在c语言中实参和形参之间的数据传输是单向的“值传递”方式,也就是实参可以影响形参,而形参不能影响实参。指针变量作为参数也不例外,但是可以改变实参指针变量所指向的变量的值。 #in...
    99+
    2022-11-12
  • C语言超详细讲解宏与指针的使用
    目录1、关于define2、初识指针(1)内存(2)示例(3)指针的使用示例(4)指针变量的大小1、关于define define是一个预处理指令,有两种用法,一种是用define定...
    99+
    2022-11-13
  • 深入浅出理解C语言指针的综合应用
    目录指针是什么?指针变量  使用指针变量的例子通过指针引用数组&数组名vs数组名野指针野指针成因1.指针未初始化2.指针越界访问如何避免野指针指针运算指针是什么? ...
    99+
    2022-11-13
  • C语言结构体指针的具体使用
    目录什么是结构体指针?如何访问结构体成员?如何传递结构体指针作为参数?结构体指针数组在 C语言中,结构体指针是一种非常有用的数据类型,它可以让我们更方便地操作结构体。结构体指针可以指...
    99+
    2023-05-20
    C语言结构体指针
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作