指针和字符数组笔试题及其解析(第三组)

简介: 指针和字符数组笔试题及其解析(第三组)

个人主页Lei宝啊

愿所有美好如期而遇


第三组笔试题

char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p[0]));
printf("%d\n", sizeof(&p));
printf("%d\n", sizeof(&p+1));
printf("%d\n", sizeof(&p[0]+1));
printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));

答案

8 8 1 1 8 8 8

6 5 error error 随机值 随机值 5

(博主用的是64位机器,所以地址占的空间大小为8字节,如果得4的话,是32位机器)  

 

解析

  char* p = "abcdef";
  printf("%d\n", sizeof(p));
  //p是字符指针,大小为4/8
  printf("%d\n", sizeof(p + 1));
  //p指向字符'b',求的还是p的大小,4/8
  printf("%d\n", sizeof(*p));
  //p指向'a',解引用访问'a',所以大小为1个字节
  printf("%d\n", sizeof(p[0]));
  //'a',1字节
  printf("%d\n", sizeof(&p));
  //&p,指针类型为char**,还是指针,4/8
  printf("%d\n", sizeof(&p + 1));
  //跳过一个char**大小的指针,还是char**类型的指针,4/8
  printf("%d\n", sizeof(&p[0] + 1));
  //指向'b'的指针,4/8
  //--------------------------------------------------------
  //--------------------------------------------------------
  printf("%d\n", strlen(p));
  //长度为6
  printf("%d\n", strlen(p + 1));
  //长度为5
  printf("%d\n", strlen(*p));
  //error, *p是'a',ASCII值为97,当做地址传入strlen,
  //成为野指针,非法访问
  printf("%d\n", strlen(p[0]));
  //同理
  printf("%d\n", strlen(&p));
  //随机值,指针类型为char**,指向p这个指针
  //注意p是指向字符串首元素的。
  printf("%d\n", strlen(&p + 1));
  //随机值,同理
  printf("%d\n", strlen(&p[0] + 1));
  //指向第二个字符,长度为5

目录
相关文章
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
284 0
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
339 0
|
存储 C++
有关【指针运算】的经典笔试题
有关【指针运算】的经典笔试题
243 4
|
SQL 关系型数据库 数据处理
|
存储 SQL Python
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
2134 13
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
971 4
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
295 0

推荐镜像

更多
  • DNS