2025_1_31 C语言中关于数组和指针

news/2025/2/5 22:42:17 标签: c语言, java, 开发语言

1.数组作为指针传递

数组作为指针传递可以:

  • 加一个数
  • 减一个数
  • 两个指针相减
  • 自增
  • 自减
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	printf("%d\n", arr[0] + 2);
	printf("%d\n", arr[2] - 2);
	printf("%d\n", arr[0] + arr[2]);
	int* p = &arr[0];
	int* q = &arr[2];
	printf("%d\n", q - p);//数组的指针可以相减,表示下标之差
	return 0;
}

在这里插入图片描述

2.*p++

*p++常被用于数组的遍历
他是先返回当前解引用的值,然后自增,指向下一个元素的地址。

void traverse(int* arr, int len) {
	int* p = arr;

	while (p < arr + len) {
		printf("%d\n", *p++);
	}
}


int main(){
	int a[] = { 1,2,3,4,5,6,7 };
	traverse(a, 7);
	return 0;
}

3.指针作为返回值

指针作为返回值一般是高危操作,因为这个指针在函数内被创建,一旦函数被销毁,这个指针就成为了悬空指针,指向了被释放的内存区域。

所以要返回的指针最好被设置为静态的或者动态分配

int* get_max_min(int* arr, int len) {
	int max = arr[0], min = arr[0];
	for (int i = 1; i < len; i++) {
		if (max < arr[i]) {
			max = arr[i];
		}
	}
	for (int i = 1; i < len; i++) {
		if (min > arr[i]) {
			min = arr[i];
		}
	}
	static int result[2];
	result[0] = max;
	result[1] = min;
	return result;
}
int main() {
	int arr[] = { 1,2,3,4 };
	int* result = get_max_min(arr, sizeof(arr) / sizeof(arr[0]));
	printf("%d %d", result[0], result[1]);
	return 0;
}


http://www.niftyadmin.cn/n/5842445.html

相关文章

Spring Security(maven项目) 3.0.3.0版本

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

Linux进程状态及其转换

在Linux系统中&#xff0c;进程是操作系统进行资源分配和调度的基本单位。每个进程在执行过程中会经历不同的状态&#xff0c;这些状态反映了进程当前的活动情况。通过top命令&#xff0c;我们可以实时查看系统中各个进程的状态。理解这些状态及其转换关系&#xff0c;对于系统…

基于RLS的自适应滤波器设计与Matlab实现

引言 自适应滤波器在信号处理领域具有重要应用&#xff0c;包括系统辨识、噪声消除和信道均衡等。递归最小二乘&#xff08;RLS&#xff09;算法因其快速收敛特性成为经典自适应算法之一。本文详细介绍RLS算法原理&#xff0c;并给出Matlab实现示例。 一、RLS算法原理 1.1 算…

Qt中的UIC、MOC、RCC宏定义说明

在Qt6新建工程的时候&#xff0c;CMakeLists.txt中会默认带有UIC&#xff0c;MOC&#xff0c;RCC的3个宏定义。 set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) uic(User Interface Compiler)&#xff0c;用户界面编译器&#xff0c;将根据.ui文件生成相…

C_数据结构(队列) —— 队列的初始化、入队列队尾、队列判空、出队列队头、取队头队尾数据、队列有效元素个数、销毁队列

目录 一、概念与结构 二、队列的实现 1、队列的初始化 1. 函数目的 2. 参数说明 3. 断言检查 4. 初始化队列的头尾指针 5. 初始化队列的大小 6. 总结 2、入队列队尾 1. 函数目的 2. 参数说明 3. 断言检查 4. 申请新节点 5. 初始化新节点 6. 将新节点插入队列 …

LabVIEW涡轮诊断系统

一、项目背景与行业痛点 涡轮机械是发电厂、航空发动机、石油化工等领域的核心动力设备&#xff0c;其运行状态直接关系到生产安全与经济效益。据统计&#xff0c;涡轮故障导致的非计划停机可造成每小时数十万元的经济损失&#xff0c;且突发故障可能引发严重安全事故。传统人…

OpenAI新商标申请曝光:AI硬件、机器人、量子计算全线布局?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

360手机刷机 360手机解Bootloader 360手机ROOT

360手机刷机 360手机解Bootloader 360手机ROOT 问&#xff1a;360手机已停产&#xff0c;现在和以后&#xff0c;能刷机吗&#xff1f; 答&#xff1a;360手机&#xff0c;是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…