当前位置:网站首页>让学指针变得更简单(三)
让学指针变得更简单(三)
2022-07-06 07:50:00 【南航科院小张】
前言
指针面试题,对指针的理解不再停留在简单的知识层面上,而是可以知道面试题中指针的考察是怎样的;

一、指针和数组笔试题解析
1.1 一维数组
首先说一下知识点:很重要!!!
数组名的意义:
- sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
- &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
- 除此之外所有的数组名都表示首元素的地址。
int a[ ] = {1,2,3,4};
printf( “%d\n”,sizeof(a) );
printf( “%d\n”,sizeof(a+0) );
printf( “%d\n”,sizeof(a) );
printf( “%d\n”,sizeof(a+1) );
printf( “%d\n”,sizeof(a[1]) );
printf( “%d\n”,sizeof(&a) );
printf( “%d\n”,sizeof(&a) ;
printf( “%d\n”,sizeof(&a+1) );
printf( “%d\n”,sizeof(&a[0]) );
printf( “%d\n”,sizeof(&a[0]+1) );


1.2 字符数组
char arr[] = {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};
printf(“%d\n”, sizeof(arr));
printf(“%d\n”, sizeof(arr+0));
printf(“%d\n”, sizeof(*arr));
printf(“%d\n”, sizeof(arr[1]));
printf(“%d\n”, sizeof(&arr));
printf(“%d\n”, sizeof(&arr+1));
printf(“%d\n”, sizeof(&arr[0]+1));
printf(“%d\n”, strlen(arr));
printf(“%d\n”, strlen(arr+0));
printf(“%d\n”, strlen(*arr));
printf(“%d\n”, strlen(arr[1]));
printf(“%d\n”, strlen(&arr));
printf(“%d\n”, strlen(&arr+1));
printf(“%d\n”, strlen(&arr[0]+1));





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




char *p = “abcdef”;
printf(“%d\n”, sizeof§);
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§);
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));




1.3 二维数组
int a[3][4] = {0};
printf( “%d\n”,sizeof(a) );
printf( “%d\n",sizeof(a[0][0]) );
printf( “%d\n”,sizeof(a[0]) );
printf( ”%d\n",sizeof(a[0]+1) );
printf( “%d\n”,sizeof(* (a[0]+1)) );
printf( “%d\n”,sizeof(a+1) );
printf( “%d\n”,sizeof(* ( a+1) ) );
printf( “%d\n”,sizeof(&a[0]+1) );
printf( “%d\n”,sizeof( * (&a[0]+1) ) );
printf( “%d\n”,sizeof(*a) );
printf( “%d\n”,sizeof(a[3]) );


2. 指针笔试题
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int *)(&a + 1);
printf( “%d,%d”, *(a + 1), *(ptr - 1));
return 0;
}
//程序的结果是什么?


//由于还没学习结构体,这里告知结构体的大小是20个字节
struct Test
{
int Num;
char *pcName;
short sDate;
char cha[2];
short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
int main()
{
printf(“%p\n”, p + 0x1);
printf(“%p\n”, ( unsigned long )p + 0x1);
printf(“%p\n”, (unsigned int * )p + 0x1);
return 0;
}


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;
}



#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 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;
}



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;
}


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


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;
}



总结
指针的博客就告一段落了,敬请期待后面的博客吧!!!
边栏推荐
- 解决方案:智慧工地智能巡检方案视频监控系统
- Cf1036c class numbers solution
- What are the ways to download network pictures with PHP
- Key value judgment in the cycle of TS type gymnastics, as keyword use
- C # create database connection object SQLite database
- Redis list detailed explanation of character types yyds dry goods inventory
- MFC 给列表控件发送左键单击、双击、以及右键单击消息
- Solution: intelligent site intelligent inspection scheme video monitoring system
- [nonlinear control theory]9_ A series of lectures on nonlinear control theory
- How to prevent Association in cross-border e-commerce multi account operations?
猜你喜欢
![datax自检报错 /datax/plugin/reader/._drdsreader/plugin.json]不存在](/img/17/415e66d67afb055e94a966de25c2bc.png)
datax自检报错 /datax/plugin/reader/._drdsreader/plugin.json]不存在

MEX有关的学习

数据治理:主数据的3特征、4超越和3二八原则

Document 2 Feb 12 16:54

In the era of digital economy, how to ensure security?

Mise en œuvre du langage leecode - C - 15. Somme des trois chiffres - - - - - idées à améliorer

Data governance: 3 characteristics, 4 transcendence and 3 28 principles of master data

Key value judgment in the cycle of TS type gymnastics, as keyword use

22. Empty the table

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
随机推荐
[nonlinear control theory]9_ A series of lectures on nonlinear control theory
P3047 [USACO12FEB]Nearby Cows G(树形dp)
In the era of digital economy, how to ensure security?
Scala语言学习-08-抽象类
Binary tree creation & traversal
Launch APS system to break the problem of decoupling material procurement plan from production practice
[Yugong series] February 2022 U3D full stack class 011 unity section 1 mind map
Opencv learning notes 8 -- answer sheet recognition
On why we should program for all
Pangolin Library: control panel, control components, shortcut key settings
数据治理:数据质量篇
链表面试题(图文详解)
TS 类型体操 之 循环中的键值判断,as 关键字使用
数据治理:微服务架构下的数据治理
Luogu p1836 number page solution
继电反馈PID控制器参数自整定
洛谷P4127 [AHOI2009]同类分布 题解
[t31zl intelligent video application processor data]
MES, APS and ERP are essential to realize fine production
The Vice Minister of the Ministry of industry and information technology of "APEC industry +" of the national economic and information technology center led a team to Sichuan to investigate the operat