C 语言学习-06【指针】
1、目标单元与简介存取
直接访问和间接访问
#include <stdio.h>int main(void) {int a = 3, *p;p = &a;printf("a = %d, *p = %d\n", a, *p);*p = 10;printf("a = %d, *p = %d\n", a, *p);printf("Enter a: ");scanf("%d", &a);printf("a = %d, *p = %d\n", a, *p);(*p)++;printf("a = %d, *p = %d\n", a, *p);return 0; }
- 运行结果:
2、引用指针变量
引用指针变量
#include <stdio.h>int main() {int a = 15;int *p = &a;printf("%d, %d\n", a, *p);return 0; }
- 运行结果:
通过指针修改内存上的数据
#include <stdio.h>int main() {int a = 15, b = 99, c = 222;int *p = &a;*p = b;c = *p;printf("%d, %d, %d, %d\n", a, b, c, *p);return 0; }
- 运行结果:
3、指针变量作为函数参数
通过指针交换两个变量的值:
#include <stdio.h>void swap(int *p1, int *p2) {int temp;temp = *p1;*p1 = *p2;*p2 = temp; }int main() {int a = 66, b = 99;swap(&a, &b);printf("a = %d, b = %d\n", a, b);return 0; }
- 运行结果:
4、指向数组的指针
通过指针输出数组中元素的值
#include <stdio.h>int main(void) {int i, a[] = {1, 3, 5, 7, 9};int *p = a;for (i = 0; i < 5; i++) {printf("%d\t", *(p+i));}printf("\n");return 0; }
- 运行结果:
5、指向数组的指针作为函数参数
利用数组名作为参数,将数组中的 10 个整数完全颠倒顺序:
#include <stdio.h>void inv(int *x, int n);int main() {int i, a[] = {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};printf("The original array: \n");for (i = 0; i < 10; i++) {printf("%3d", a[i]);}printf("\n");inv(a, 10);printf("The array has been inverted: \n");for (i = 0; i < 10; i++) {printf("%3d", a[i]);}printf("\n");return 0; }void inv(int *x, int n) {int t, *i, *j;for (i = x, j = x + n - 1; i <= j; i++, j--) {t = *i;*i = *j;*j = t;}return; }
- 运行结果:
6、字符串指针
八进制转换成十进制:
#include <stdio.h>int main(void) {char *p, s[6];int n;n = 0;p = s;printf("Enter the octal number you want to convert: \n");gets(p);while (*(p) != '\0') {n = n * 8 + *p - '0';p++;}printf("The converted decimal number is: \n%d\n", n);return 0; }
- 运行结果:
7、指针复制字符串
字符串复制:
#include <stdio.h>int main(void) {char str1[10], str2[10];char *p1, *p2;p1 = str1;p2 = str2;printf("Please enter the original string: \n");gets(p2);for (; *p2 != '\0'; p1++, p2++) {*p1 = *p2;}*p1 = '\0';printf("The original string is %s\n, and the copied string is %s\n", str2, str1);return 0; }
- 运行结果:
字符串连接:
#include <stdio.h>int main(void) {char str1[10], str2[10], str[10];char *p1, *p2, *p;int i = 0;p1 = str1;p2 = str2;p = str;printf("Please enter the str1: \n");gets(p1);printf("Please enter the str2: \n");gets(p2);while (*p1 != '\0') {*p = *p1;p += 1;p1 += 1;i++;}for (; *p2 != '\0'; p1++, p2++, p++) {*p = *p2;}*p = '\0';printf("str1 is %s\nstr2 is %s\nAfter connection is: %s\n", str1, str2, str);return 0; }
- 运行结果:
已知一个字符串,使用返回指针的函数,实现把该字符串中的 ‘*’ 号删除,同时把后面连接的字符串前移
#include <stdio.h> #include <string.h>char *strarrange(char *arr) {char *p = arr;char *t;while (*p != '\0') {p++;if (*p == '*') {t = p;while (*t != '\0') {*t = *(t + 1);t++;}p--;}}return arr; }int main(void) {char s[] = "abc*def***ghi*jklmn";char *p;p = s;printf("Before deletion, the character string is: %s\n", p);printf("After deletion, the character string is: %s\n", strarrange(p));return 0; }
- 运行结果:
8、函数指针
指向函数的指针:
#include <stdio.h>int max(int x, int y) {int z;if (x > y) {z = x;} else {z = y;}return z; }int main(void) {int(*p)(int, int);int a, b, c;p = max;printf("Enter the values of a and b\n");scanf("%d %d", &a, &b);c = (*p)(a, b);printf("The larger value of %d and %d is: %d\n", a, b, c);return 0; }
- 运行结果:
9、使用 const 修饰指针变量
const 类型 *变量名:可以改变指针的指向,不能改变指针指向的内容类型 * const 变量名:可以改变指针指向的内容,不能改变指针的指向const 类型 * const 变量名:指针的指向、指针指向的内容都不可以改变
10、数值排序
实现将 3 个数值进行降序排列:
#include <stdio.h> #include <stdlib.h>void fun(int *a, int *b) {int temp;temp = *a;*a = *b;*b = temp; }void exchange(int *a, int *b, int *c) {if (*a < *b) fun(a, b);if (*a < *c) fun(a, c);if (*b < *c) fun(b, c); }void main() {int *p1 = (int*)malloc(sizeof(int));int *p2 = (int*)malloc(sizeof(int));int *p3 = (int*)malloc(sizeof(int));printf("Please input 3 numbers: \n");scanf("%d %d %d", p1, p2, p3);exchange(p1, p2, p3);printf("Output: \n");printf("*p1 = %d\t*p2 = %d\t*p3 = %d\n", *p1, *p2, *p3);free(p1);free(p2);free(p3); }
- 运行结果:
相关文章:
C 语言学习-06【指针】
1、目标单元与简介存取 直接访问和间接访问 #include <stdio.h>int main(void) {int a 3, *p;p &a;printf("a %d, *p %d\n", a, *p);*p 10;printf("a %d, *p %d\n", a, *p);printf("Enter a: ");scanf("%d", &a)…...
如何快速将Excel数据导入到SQL Server数据库
工作中,我们经常需要将Excel数据导入到数据库,但是对于数据库小白来说,这可能并非易事;对于数据库专家来说,这又可能非常繁琐。 这篇文章将介绍如何帮助您快速的将Excel数据导入到sql server数据库。 准备工作 这里&…...
【人工智能】Python在机器学习与人工智能中的应用
Python因其简洁易用、丰富的库支持以及强大的社区,被广泛应用于机器学习与人工智能(AI)领域。本教程通过实用的代码示例和讲解,带你从零开始掌握Python在机器学习与人工智能中的基本用法。 1. 机器学习与AI的Python生态系统 Pyth…...
使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据
我是做汽车行业的,可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容,分析各种电动汽车口碑数据。 之前,我写过很多Python网络爬虫的案例,使用requests、selenium等技术采集数据,这次尝试去采集小米SU7在微博、汽车…...
什么是事务?事务有哪些特性?
在数据库管理中,事务是一个核心概念,它确保了数据操作的完整性和一致性。本文将探讨事务的定义及其四大特性。 一、事务的定义 事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体一起向系统提…...
玩转合宙Luat教程 基础篇④——程序基础(库、线程、定时器和订阅/发布)
文章目录 一、前言二、库三、线程四、定时器五、订阅/发布5.1 回调函数5.2 堵塞等待一、前言 教程目录大纲请查阅:玩转合宙Luat教程——导读 写一写Lua程序基础的东西。 包括如何调用库,如何创建线程、如何创建定时器,如何使用订阅/发布事件。 二、库 程序从main.lua开始通…...
24.<Spring博客系统①(数据库+公共代码+持久层+显示博客列表+博客详情)>
项目整体预览 登录页面 主页 查看全文 编辑 写博客 PS:Service.impl(现在流行写法) 推荐写法。后续完成项目。会尝试这样写。 接口可以有多个实现。每个实现都可以不同。 这也算一种设计模式。叫做(策略模式)。 我们…...
webp 网页如何录屏?
工作中正好研究到了一点:记录下这里: 先看下效果: 具体实现代码:  <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
丹摩征文活动|实现Llama3.1大模型的本地部署
文章目录 1.前言2.丹摩的配置3.Llama3.1的本地配置4. 最终界面 丹摩 1.前言 Llama3.1是Meta 公司发布的最新开源大型语言模型,相较于之前的版本,它在规模和功能上实现了显著提升,尤其是最大的 4050亿参数版本,成为开源社区中非常…...
Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别
文章目录 Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别1. Jakarta EE 迁移2. Spring Security 配置方式的变化3. PasswordEncoder 加密方式的变化4. permitAll() 和 authenticated() 的变化5. 更强的默认安全设置6. Java 17 支持与语法提升7. PreAuthorize、…...
【数据结构与算法】 LeetCode:回溯
文章目录 回溯算法组合组合总和(Hot 100)组合总和 II电话号码的字母组合(Hot 100)括号生成(Hot 100)分割回文串(Hot 100)复原IP地址子集(Hot 100)全排列&…...
SpringBoot线程池的使用
SpringBoot线程池的使用 在现代Web应用开发中,特别是在使用Spring Boot框架时,合理使用线程池可以显著提高应用的性能和响应速度。线程池不仅能够减少线程创建和销毁的开销,还能有效地控制并发任务的数量,避免因线程过多而导致的…...
Neural Magic 发布 LLM Compressor:提升大模型推理效率的新工具
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
HttpServletRequest req和前端的关系,req.getParameter详细解释,req.getParameter和前端的关系
HttpServletRequest 对象在后端和前端之间起到了桥梁的作用,它包含了来自客户端的所有请求信息。通过 HttpServletRequest 对象,后端可以获取前端发送的请求参数、请求头、请求方法等信息,并根据这些信息进行相应的处理。以下是对 HttpServle…...
React-useEffect的使用
useEffect react提供的一个常用hook,用于在函数组件中执行副作用操作,比如数据获取、订阅或手动更改DOM。 基本用法: 接受2个参数: 一个包含命令式代码的函数(副作用函数)。一个依赖项数组,用…...
MySQL数据库与Informix:能否创建同名表?
MySQL数据库与Informix:能否创建同名表? 一、MySQL数据库中的同名表创建1. 使用CREATE TABLE ... SELECT语句2. 使用CREATE TABLE LIKE语句3. 复制表结构并选择性复制数据4. 使用同义词(Synonym)二、Informix数据库中的同名表创建1. 使用不同所有者2. 使用不同模式3. 复制表…...
爬虫实战:采集知乎XXX话题数据
目录 反爬虫的本意和其带来的挑战目标实战开发准备代码开发发现问题1. 发现问题[01]2. 发现问题[02] 解决问题1. 解决问题[01]2. 解决问题[02] 最终结果 结语 反爬虫的本意和其带来的挑战 在这个数字化时代社交媒体已经成为人们表达观点的重要渠道,对企业来说&…...
大数据新视界 -- Hive 数据桶原理:均匀分布数据的智慧(上)(9/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
【小白学机器学习33】 大数定律python的 pandas.Dataframe 和 pandas.Series基础内容
目录 0 总结 0.1pd.Dataframe有一个比较麻烦琐碎的地方,就是引号 和括号 0.2 pd.Dataframe关于括号的原则 0.3 分清楚几个数据类型和对应的方法的范围 0.4 几个数据结构的构造关系 list → np.array(list) → pd.Series(np.array)/pd.Dataframe 1 python 里…...
【shodan】(五)网段利用
shodan基础(五) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 nsa ip address range www.nsa.gov需科学上网 搜索网段 shodan s…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...











