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

个人自用----c语言指针复习(malloc)

文章目录

  • 前言
  • 一、题目
  • 二、c语言代码
  • 总结


前言

一直搞不清指针的用法,特别是跟数组结合在一起,今天找了一个小题目就准备看看指针和数组到底的应用。其实主要是就是形参的传递,今天算是了解了一点点,当时上c语言课程的时候也没弄清楚。今天用到了malloc关键词的用法,对不确定长度的数组进行内存的分配,后续肯定是有作用的,比如内存比较紧张的情况下等等。
后面的结构体、链表也得找的题目熟悉复习一下。
感觉这几个是嵌入式中用的比较多的?其他就是简单的判断和循环了。

一、题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

二、c语言代码

#include <stdio.h>
#include <stdlib.h> // 添加此头文件用于 malloc 和 freeint* fun(int* nums, int numsize, int target, int* returnnum) {int i, j;for (i = 0; i < numsize; i++) {for (j = i + 1; j < numsize; j++) {if (nums[i] + nums[j] == target) {returnnum[0] = i;returnnum[1] = j;return returnnum;}}}return NULL;
}int main() {int numsize;  // 数组大小int target;   // 目标值int* num = NULL; // 指向动态分配数组的指针// 输入数组大小printf("请输入数组的大小: ");scanf("%d", &numsize);// 动态分配内存给数组num = (int*)malloc(numsize * sizeof(int));if (num == NULL) {printf("内存分配失败!\n");return 1; // 退出程序并返回错误代码}// 输入数组元素printf("请输入 %d 个整数:\n", numsize);for (int i = 0; i < numsize; i++) {scanf("%d", &num[i]);}// 输入目标值printf("请输入目标值: ");scanf("%d", &target);// 计算结果int result[2];int* ret = fun(num, numsize, target, result);// 输出结果if (ret != NULL) {printf("找到解: [%d, %d]\n", ret[0], ret[1]);printf("因为 nums[%d] + nums[%d] = %d + %d = %d\n", ret[0], ret[1], num[ret[0]], num[ret[1]], target);} else {printf("未找到两数之和等于 %d 的解\n", target);}// 释放动态分配的内存free(num);// 程序暂停printf("\n按回车键退出...");getchar();  // 消耗输入缓冲区中的换行符getchar();  // 等待用户按回车return 0;
}

在这里插入图片描述

总结

记录一下吧,最近一个月都在培训,没怎么学习,好难受,没有提升,还是挤时间吧。手机上刷题感觉也没啥作用,用电脑也没时间。继续加油吧。

http://www.lryc.cn/news/608669.html

相关文章:

  • 大语言模型涉及的一些概念(持续更新)
  • 安卓加固脱壳
  • 1.8 axios详解
  • Axios介绍
  • 超声波泄露传感器
  • SpringBoot3.x入门到精通系列:2.6 整合 Redis 详解
  • Python 基础语法(一):从常量到运算符
  • jvm之jconsole的使用
  • MySQL连接算法和小表驱动大表的原理
  • 初识prometheus
  • Selenium Web 自动化
  • 【软考中级网络工程师】知识点之 RIP 协议
  • 华为智能家居与Spring人工智能
  • 决策树学习全解析:从理论到实战
  • C++手撕基于ID3算法的决策树
  • 著作权登记遇难题:创作者如何突破确权困境?
  • 自动驾驶中的传感器技术19——Camera(10)
  • ELECTRICAL靶场
  • ClickHouse Windows迁移方案与测试
  • 【动态规划算法】路径问题
  • WebRTC前处理模块技术详解:音频3A处理与视频优化实践
  • Node.js (Express) + MySQL + Redis构建项目流程
  • 决策树的实际案例
  • sqli-labs:Less-25关卡详细解析
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | TodoList(代办事项组件)
  • 子区间问题
  • 主机序列号的修改方法与原理
  • Azure DevOps 中的代理
  • 渗透作业4
  • LeetCode - 合并两个有序链表 / 删除链表的倒数第 N 个结点