网站搭建什么意思,织梦网站做瀑布流方便,建设银行官方网站网址,深圳建筑业协会官网【C语言】指针和数组笔试题解析#xff08;1#xff09;#xff0c; 这是第一篇关于sizeof与strlen在指针中的应用#xff0c;而这一篇主要讲解在各种情形下的灵活运用#xff0c;也是大厂中经典的面试题 第一题#xff1a;
int main()
{int a[5] { 1, 2, 3, 4, 5 };in…【C语言】指针和数组笔试题解析1 这是第一篇关于sizeof与strlen在指针中的应用而这一篇主要讲解在各种情形下的灵活运用也是大厂中经典的面试题 第一题
int main()
{int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(a 1);printf( %d,%d, *(a 1), *(ptr - 1));return 0;
}
//程序的结果是什么答案 2,5 解析 a为整个数组的地址1就会跳过一个数组 此时a 1的类型为数组指针强转为整形指针放在ptr中 那么ptr-1为 故*(ptr - 1)为5而*(a 1)其实是a[1]的另一种写法为2 一一一一一一一一一分割线一一一一一一一一一一 第二题
//由于还没学习结构体这里告知结构体的大小是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;
}答案 00100014 00100001 00100004 解析 第一个printf p为结构体指针结构体指针1会跳过一个结构体 从题目中我们已知此结构体大小为20字节 要注意p是16进制十进制的20是十六进制的14加上20后为100014 打印时是以地址形式打印故要8个16进制最终结果为00100014 第二个printf p被强转为整形 整形1就是1只有指针加减才是比较特殊的 然后以地址形式打印为00100001 第三个printf p被强转为整形指针1会跳过一个整形即4 结果为00100004 一一一一一一一一一分割线一一一一一一一一一一 第三题
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;
}答案 42000000 解析 ptr[-1] ptr[-1]可以写成*ptr-1 *ptr a被转化为整形1就是1 然后被强转为整形指针由于一个地址管理一个字节故指针此时指向01后 解引用后会在01后边访问4字节 一一一一一一一一一分割线一一一一一一一一一一 第四题
#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;
}答案 1 解析 注意{}中是是逗号表达式 p为第一行数组名数组名[0]表示第一行第一个元素即为1 此贴·会持续更新欢迎纠错与讨论