2.【C语言】(函数指针||sizeof||笔试题)

0x01.函数指针

c 复制代码
void test(const char* str)
{
	printf("%s\n", str);
}

int main()
{
	void (*pf)(const char*) = test;//pf是函数指针变量
	void (*pfarr[10])(const char*);//pfarr是存放函数指针的数组
	void (*(*p)[10])(const char*) = &pfarr;//p是指向函数指针数组的指针
	return 0;
}

0x02.sizeof

1.用法

c 复制代码
int arr[5]={0};
sizeof(arr);
sizeof arr;

2.注意点

sizeof是在编译阶段判断了括号里的类型为short,所以第一个答案是4,判断完类型后就不进行括号里的运算了,最后输出的结果依旧是4.

0x03.笔试题

1.

c 复制代码
//程序的结果是什么?
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.

c 复制代码
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);//%x位16进制
  return 0;
}

3.

c 复制代码
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;
}


相关推荐
czy878747519 小时前
C语言实现迭代器模式
c语言·迭代器模式
野生技术架构师20 小时前
牛客网Java 高频面试题总结(2025最新版)
java·开发语言·面试
一只鹿鹿鹿20 小时前
系统安全设计方案书(Word)
开发语言·人工智能·web安全·需求分析·软件系统
GilgameshJSS20 小时前
STM32H743-ARM例程36-DNS
c语言·arm开发·stm32·单片机·嵌入式硬件
持梦远方20 小时前
【C++日志库】启程者团队开源:轻量级高性能VoyLog日志库完全指南
开发语言·c++·visual studio
聪明努力的积极向上20 小时前
【C#】HTTP中URL编码方式解析
开发语言·http·c#
嵌入式-老费20 小时前
自己动手写深度学习框架(快速学习python和关联库)
开发语言·python·学习
ctgu9020 小时前
PyQt5(八):ui设置为可以手动随意拉伸功能
开发语言·qt·ui
CVer儿20 小时前
libtorch ITK 部署 nnUNetV2 模型
开发语言
asyxchenchong88821 小时前
OpenLCA、GREET、R语言的生命周期评价方法、模型构建
开发语言·r语言