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


相关推荐
云水-禅心6 分钟前
解决MacOS 安装Python之后默认版本指向不正确问题
开发语言·python·macos
冰暮流星7 分钟前
javascript之this关键字
开发语言·前端·javascript
rit84324998 分钟前
基于Qt的串口上位机控制蓝牙小车程序
开发语言·qt
百度Geek说8 分钟前
CodingAgent 的原始森林困境:一张地图能解决什么?
开发语言·javascript·ecmascript·coding agent
sunny.day16 分钟前
js原型与原型链
开发语言·javascript·原型模式·js原型链
weixin_5231853219 分钟前
Java内存模型详解:栈、堆、方法区、本地方法栈与程序计数器
java·开发语言
换个昵称都难32 分钟前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc
爱吃生蚝的于勒40 分钟前
QT开发第三章——常用控件
linux·服务器·开发语言·前端·javascript·c++·qt
未若君雅裁44 分钟前
工厂模式详解:简单工厂、工厂方法与抽象工厂
java·开发语言
我命由我123451 小时前
由 ImageView 获取到的 Drawable 对象,它的 intrinsicWidth、intrinsicWidth 与实际图片的尺寸
java·开发语言·java-ee·android studio·android jetpack·android-studio·android runtime