当前位置: 首页 > article >正文

函数指针/逗号表达式/不用if语句完成的字母输出题

1.函数指针用的不是那么频繁的一个操作:

下面是代码演示:

在这个int (*jump)(int);中 jump是这个指针变量名称,第一个int是指针类型,第二个int是指的这个指针所指的函数参数是int类型的。

#include <stdio.h>

// 定义一个符合函数指针要求的函数
int add(int num) {
    return num + 1;
}

int main() {
    int (*jump)(int);  // 声明函数指针
    jump = add;  // 将函数指针指向add函数
    int result = jump(5);  // 通过函数指针调用函数
    printf("结果是: %d\n", result); 
    return 0;
} 

2.逗号表达式:

在 C 语言中,逗号表达式是由逗号运算符 , 连接起来的多个表达式。其一般形式为:

表达式1, 表达式2, …, 表达式n

基本特性

  • 运算顺序:逗号表达式从左到右依次计算各个子表达式的值。例如对于 a = 3, b = 5, c = a + b,先计算 a = 3 (此时 a 的值变为 3 ),接着计算 b = 5 (b 的值变为 5 ),最后计算 c = a + b (c 的值为 8 )。
  • 返回值:整个逗号表达式的值是最后一个子表达式的值。比如在 (x = 3 * 5, x * 4), x + 5 中,先计算 x = 3 * 5 (x 变为 15 ),接着 x * 4 的结果被忽略,因为逗号表达式取最后一个子表达式的值,所以最后计算 x + 5 ,整个表达式的值为 20 (前提是 x 在此之前已正确声明 )。

常见用途

  • 在循环中同时执行多个操作
for (int i = 0, j = 10; i < 5 && j > 5; i++, j--) {
    // 循环体
    printf("i = %d, j = %d\n", i, j);
}

这里在 for 循环的初始化部分 int i = 0, j = 10 和更新部分 i++, j-- 使用逗号表达式,能够同时对多个变量进行初始化和更新操作。

3.笔试题 :

--不用if语句, 将一个字母组成的字符串,计算出每个字母的出现次数,按照字母大小升序输出。

这道题也用到了逗号表达式

void countArray(char ch[])
{
	int array[26] = { 0 };
	int len = strlen(ch);
	for (int i = 0; i < len; i++)
	{
		char c = tolower(ch[i]);
		int index = c - 'a';
		array[index]++;

	}
	//逗号表达式和三目运算符
	int j = 0;
	while (j < 26)
	{
		((array[j] > 0) ? printf("%c:%d", j +'a', array[j]):0, j++);
	}
}

--合并降序链表:

struct LNode
{
	int val;
	struct LNode* next;

};

struct LNode* merge_list(struct LNode* L1, struct LNode* L2)
{
	struct LNode* dummy;
	dummy->next = NULL;
	struct LNode* tail = dummy;

	while (L1&&L2)
	{
		if (L1->val >= L2->val)
		{
			tail->next = L1;
			L1 = L1->next;

		}
		else
		{
			tail->next = L2;
			L2 = L2->next;
		}

		tail = tail->next;

	}
	tail->next = (L1 != NULL) ? L1 : L2;
	return dummy->next;
}


http://www.kler.cn/a/586627.html

相关文章:

  • React 和 Vue 框架设计原理对比分析
  • 乐观锁VS分布式锁实现抢单服务
  • windows安装两个或多个JDK,并实现自由切换
  • git证书文件路径错误
  • GitHub 汉化插件,GitHub 中文化界面安装全教程_最新
  • linux root丢失修改密
  • 【spring-boot-starter-data-neo4j】创建结点和查找结点操作
  • 用tiptap搭建仿google-docs工具栏
  • JavaScript基础篇:五、 流程控制语句
  • java学习笔记2
  • 告别XML模板的繁琐!Word文档导出,easy!
  • Kubernetes 单节点集群搭建
  • tcpdump剖析:入门网络流量分析实战指南
  • Ubuntu从源代码编译安装QT
  • 进程间通信--匿名管道
  • 【蓝桥杯】雪地工程核弹引爆控制器最小数量计算
  • Pytorch实现之最小二乘梯度归一化设计
  • 在离线情况下如何使用 Python 翻译文本
  • 【JVM】性能监控与调优概述篇
  • 基于RAGFlow本地部署DeepSpeek-R1大模型与知识库:从配置到应用的全流程解析