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);
}
  • 运行结果:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478632.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker镜像、容器、仓库介绍

docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台&#xff0c;用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中&#xff0c;使得应用能够在任何环境下运行&#xff0c;不受底层系…

《用Python画蔡徐坤:艺术与编程的结合》

简介 大家好&#xff01;今天带来一篇有趣的Python编程项目&#xff0c;用代码画出知名偶像蔡徐坤的形象。这个项目使用了Python的turtle库&#xff0c;通过简单的几何图形和精心设计的代码来展示艺术与编程的结合。 以下是完整的代码和效果介绍&#xff0c;快来试试看吧&…

网络层协议IP

对于网络层我们直接通过IP协议来了解其内容 一.IP协议 首先我们先来了解几个概念&#xff1a; 主机&#xff1a;配有IP地址&#xff0c;但是不进行路由控制的设备 路由器&#xff1a;配有IP地址&#xff0c;同时进行路由控制的设备 节点&#xff1a;主机和路由器的统称 所以现在…

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议&#xff0c;概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

Windows系统电脑安装TightVNC服务端结合内网穿透实现异地远程桌面

文章目录 前言1. 安装TightVNC服务端2. 局域网VNC远程测试3. Win安装Cpolar工具4. 配置VNC远程地址5. VNC远程桌面连接6. 固定VNC远程地址7. 固定VNC地址测试 前言 在追求高效、便捷的数字化办公与生活的今天&#xff0c;远程桌面服务成为了连接不同地点、不同设备之间的重要桥…

lua除法bug

故事背景&#xff0c;新来了一个数值&#xff0c;要改公式。神奇的一幕出现了&#xff0c;公式算出一个非常大的数。排查是lua有一个除法bug,1除以大数得到一个非常大的数。 function div(a, b)return tonumber(string.format("%.2f", a/b)) end print(1/73003) pri…

洛谷 B3635 硬币问题 C语言 记忆化搜索

题目&#xff1a; https://www.luogu.com.cn/problem/B3635 用贪心可以但是会有测试点不过。比如15,11111115.或者55515&#xff0c;如果你是贪心把最大值的硬币放在第一个&#xff0c;那么这个测试点就错误了。用记忆化搜索可以&#xff0c;因为贪心只能测一次&#xff0c;记…

【数据结构与算法】合并链表、链表分割、链表回文结构

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 1.合并链表 题目&#xff1a;将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链…

NuGet如何支持HTTP源

今天是2024年11月21号&#xff0c;最近更新了VisualStudio后发现HTTP的包源已经默认禁止使用了&#xff0c;生成时会直接报错。如下图&#xff1a; 官方也明确指出了要想使用HTTP包源的解决办法&#xff0c;这里就简单总结一下。 一、全局配置 1、全局NuGet包的配置文件路径在…

ArcGIS API for Javascript学习

一、ArcGIS API for Javascript 介绍 ArcGIS API for Javascript 是由美国 Esri 公司推出&#xff0c;跟随ArcGIS 9.3 同时发布的&#xff0c;是Esri 基于dojo 框架和 REST 风格实现的一套编程接口。通过 ArcGIS API for Javascript可以对ArcGIS for Server 进行访问&#xff…

React表单联动

Ant Design 1、dependencies Form.Item 可以通过 dependencies 属性&#xff0c;设置关联字段。当关联字段的值发生变化时&#xff0c;会触发校验与更新。 一种常见的场景&#xff1a;注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段&#x…

Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序

在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序 IntelliJ IDEA 是一个用 Java 编写的集成开发环境 (IDE)。它用于开发计算机软件。此 IDE 由 Jetbrains 开发&#xff0c;提供 Apache 2 许可社区版和商业版。它是一种智能的上下文感知 IDE&#xff0c;可用于在各种应用程序…

丹摩征文活动|实现Llama3.1大模型的本地部署

文章目录 1.前言2.丹摩的配置3.Llama3.1的本地配置4. 最终界面 丹摩 1.前言 Llama3.1是Meta 公司发布的最新开源大型语言模型&#xff0c;相较于之前的版本&#xff0c;它在规模和功能上实现了显著提升&#xff0c;尤其是最大的 4050亿参数版本&#xff0c;成为开源社区中非常…

STM32F103外部中断配置

一、外部中断 在上一节我们介绍了STM32f103的嵌套向量中断控制器&#xff0c;其中包括中断的使能、失能、中断优先级分组以及中断优先级配置等内容。 1.1 外部中断/事件控制器 在STM32f103支持的60个可屏蔽中断中&#xff0c;有一些比较特殊的中断&#xff1a; 中断编号13 EXTI…

docker run m3e 配置网络,自动重启,GPU等 配置渠道要点

启动命令&#xff1a; docker run -d --restart always -p 6008:6008 --gpus all --name m3e --network fastgpt_fastgpt stawky/m3e-large-api 配置渠道m3e base url要像我这样填写才行&#xff0c;不然回出问题 模型要选m3e 密钥填&#xff1a;sk-aaabbbcccdddeeefffggghhhi…

ubuntu24挂载硬盘记录

1、显示硬盘及所属分区情况。在终端窗口中输入如下命令&#xff1a; sudo fdisk -l 找到自己硬盘的分区 我的地址/dev/sda 2、显示硬盘及所属分区情况。在终端窗口中输入如下命令&#xff0c;格式化自己硬盘&#xff1a; sudo mkfs -t ext4 /dev/sda 3、在终端窗口中输入如下…

加菲工具 - 好用免费的在线工具集合

加菲工具 https://orcc.online AI 工具 加菲工具 集合了目前主流的&#xff0c;免费可用的ai工具 文档处理 加菲工具 pdf转word、office与pdf互转等等工具都有链接 图片图标 加菲工具 统计了好用免费的在线工具 编码解码 加菲工具 base64编码解码、url编码解码、md5计算…

网络安全与加密

1.Base64简单说明描述&#xff1a;Base64可以成为密码学的基石&#xff0c;非常重要。特点&#xff1a;可以将任意的二进制数据进行Base64编码结果&#xff1a;所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符&#xff1a;A~Z a~z 0~9 / 对文件进行base64编码…

Easyexcel(6-单元格合并)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09;Easyexcel&#xff08;5-自定义列宽&#xff09;Easyexcel&#xff08;6-单…

三种蓝牙架构实现方案

一、蓝牙架构方案 1、hostcontroller双芯片标准架构 手机里面包含很多SoC或者模块&#xff0c;每颗SoC或者模块都有自己独有的功能&#xff0c;比如手机应用跑在AP芯片上&#xff0c;显示屏&#xff0c;3G/4G通信&#xff0c;WiFi/蓝牙等都有自己专门的SoC或者模块&#xff0…