19.初始C语言指针

初始C语言指针

  • 1.指针的认识
  • 2.指针变量的引入
  • 3.指针变量的类型
  • 4.指针的应用场景1
  • 5.指针的应用场景2
  • 6.作业

1.指针的认识

  • 指针 = 地址

    //int   a  = 10;
    //类型  变量名  内存地址  值
    1.变量名直接访问2.通过地址访问&:取地址运算符* :将地址内的值读取出来的运算符
    
  • 指针变量=存放地址的变量

  • #include <stdio.h>int main(){int a = 10;//通过变量名直接访问printf("%d\n",a);//通过地址进行访问printf("a的地址是:%p\n",&a);//通过地址进行取a的值printf("a=%d",*(&a));return 0;
    }
    

2.指针变量的引入

  • 定义指针变量

    *的标识符作用:只产生指针变量定义或声明的时候

  • 使用指针变量

    *的运算作用:把后面跟的内存地址中的数据取出来

  • 变量访问的两种方式

    • 通过变量名直接访问
    • 通过指针间接访问
      在这里插入图片描述

3.指针变量的类型

#include <stdio.h>int main(){int a = 0x1234;int *p = &a;char *c = &a;//不管是int类型还是char型//我们都可以拿到相同的地址//都可以拿到相同的地址printf("p=%p\n",p);printf("c=%p\n",c);//取值运算符会根据指针变量类型来访问不同的空间大小printf("a=%x\n",*p);printf("c=%x\n",*c);	
}

4.指针的应用场景1

//进行函数的封装TEST的时候
//main函数调用的时候发生了值拷贝
//也就是通过函数名直接访问,但是会有bug
//原因如下
//1.虽然main函数的变量名和TEST变量名一样
//2.但是两个函数里面对应变量名的地址不一样#include <stdio.h>void change(int *data1,int *data2){int temp;temp   = *data1;*data1 = *data2;*data2 = temp;}
int main(){int data1 = 10;int data2 = 20;printf("交换前:data1 = %d,data2 = %d\n",data1,data2);change(&data1,&data2);printf("交换后:data1 = %d,data2 = %d\n",data1,data2);
}

5.指针的应用场景2

#include <stdio.h>int main(){int a = 10;printf("adress is %p\n",&a);volatile unsigned int *p  = (volatile unsigned int *)0x0061FE33;//整数强转为地址printf("p=%p\n",p);//特定的位置存放地址return 0;
}
//volatile:防止编译器自动优化内存地址

6.作业

封装函数来实现三个数从小到大的排序

#include <stdio.h>  // 交换两个数的值  
void swap(int *a, int *b) {  int temp = *a;  *a = *b;  *b = temp;  
}  // 排序函数,按照从大到小的顺序对三个数进行排序  
void sort_descending(int *a, int *b, int *c) {  if (*a < *b) {  swap(a, b);  }  if (*b < *c) {  swap(b, c);  }  if (*a < *b) {  swap(a, b);  }  
}  // 输出三个数的函数  
void print_sorted(int a, int b, int c) {  printf("%d %d %d\n", a, b, c);  
}  // 主函数  
int main() {  int a, b, c;  // 输入三个数  printf("请输入三个数(用空格分隔): ");  scanf("%d %d %d", &a, &b, &c);  // 调用排序函数进行排序  sort_descending(&a, &b, &c);  // 调用输出函数,打印排序后的结果  print_sorted(a, b, c);  return 0;  
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos未授权下载配置信息

0x01 漏洞描述&#xff1a; Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos存在未授权文件下载&#xff0c;攻击者在不登录情况下可未授权下载系统配置文件。 攻击者利用该漏洞可未授权获取到系统配置文件&#xff0c;如数据库和Redis连接地址…

【Delphi】创建应用程序和 LiveBindings示例(FMX)

一、创建一个FMX程序 界面上放置上如下3个控件&#xff1a;TProgressBar1, TArcDial1,TTrackBar1。 二、打开LiveBindings Designer 设计器 三、在 LiveBindings Designer 中&#xff0c;您的绑定图只包含对象&#xff0c;您可以将它们连接起来。 四、在设计器中&#xff0c;在…

openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面

效果图&#xff1a; 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分&#xff0c;然后在.h声明右边的openframeworks的UI部分&#xff0c;包括面板ofxPanel&#xff0c;按钮ofx…

Tomcat 漏洞复现

1、CVE-2017-12615 1、环境开启 2、首页抓包&#xff0c;修改为 PUT 方式提交 Tomcat允许适用put方法上传任意文件类型&#xff0c;但不允许isp后缀文件上传&#xff0c;因此需要配合 windows的解析漏洞 3、访问上传的jsp文件 4、使用工具进行连接 2、后台弱⼝令部署war包 1…

简单了解一下SurfaceView

0 背景 最近好几次面试被问到SurfaceView的特点了&#xff0c;都没回答出来。 SurfaceView和TextureView也是Compose这样的声明式ui唯二实现不了控件&#xff1b;因为他们就不是View&#xff0c;而是Android提供的和Surface相关的显示系统 。 特此简单了解一下。 1 应用场景…

【Godot4.3】点数据简易表示法和Point2D

概述 在构造多点路径时我们会用到PackedVector2Array&#xff0c;并使用Vector2()来构造点。在手动创建多点数据时&#xff0c;这种写法其实很难看&#xff0c;有大量重复的Vector2()&#xff0c;比如下面这样&#xff1a; var points [Vector2(100,100),Vector2(200,200),V…

[Python]二、Python基础数据科学库(1)

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\2、机器学习核心技术\1、零基础快速入门机器学习 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能与机器学习、深度学习 1956年-达特茅斯会议-人工智能的起点 人工智能和机器学习、深度学习的关系: 1. 机器学习…

软考(9.22)

1 在浏览器的地址栏中输入xxxyftp.abc.can.cn&#xff0c;在该URL中( )是要访问的主机名。 A.xxxyftp B.abc C.can D.cn 协议://主机名.域名.域名后缀或IP地址(:端口号)/目录/文件名。 本题xxxyftp是主机名&#xff0c;选择A选项。 2 假设磁盘块与缓冲区大小相同&#xff0c;…

Django基础-创建新项目,各文件作用

学习Django的前置知识&#xff1a; python基本语法&#xff1a;需要掌握Python中的变量、循环、条件判断、函数等基本概念。面向对象编程&#xff08;OOP&#xff09;&#xff1a;Django的核心架构基于面向对象编程&#xff0c;许多功能&#xff08;如模型和视图&#xff09;依…

【无人机设计与控制】 基于matlab的蚁群算法优化无人机uav巡检

摘要 本文使用蚁群算法&#xff08;ACO&#xff09;优化无人机&#xff08;UAV&#xff09;巡检路径。无人机巡检任务要求高效覆盖特定区域&#xff0c;以最小化能源消耗和时间。本研究提出的算法通过仿生蚁群算法优化巡检路径&#xff0c;在全局搜索和局部搜索中平衡探索与开…

文档布局内容检测系统源码分享

文档布局内容检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

银河麒麟高级服务器操作系统V10外接硬盘挂载指南

银河麒麟高级服务器操作系统V10外接硬盘挂载指南 1、临时挂载外接硬盘2、永久挂载外接硬盘3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟高级服务器操作系统V10时&#xff0c;您可能希望将外接硬盘&#xff08;如sd…

django应用JWT(JSON Web Token)实战

文章目录 一、什么是JWT二、为什么使用JWT三、在django项目中如何应用JWT1、安装djangorestframework-simplejwt库&#xff1a;2、在settings.py中配置JWT认证&#xff1a;3、在urls.py中配置JWT的获取和刷新路由&#xff1a; 四、JWT如何使用1、调用生成JWT的接口获取JWT2、客…

C/C++内存管理 ——

目录 五、C/C内存管理 1、C/C内存分布 2、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3、C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 4、operator new与operator delete函数 5、new和delete的实现原理 1.内置类…

十六 未来信息综合技术(考点篇)试题

SaaS&#xff1a;软件即服务&#xff0c;PaaS&#xff1a;平台即服务&#xff0c;LaaS&#xff1a;基础设施即服务。 SaaS&#xff1a;偏向于提供各种软件接口来提供相关的服务&#xff1b;PaaS&#xff1a;偏向于吧一些基础的功能整合成一个平台&#xff0c;把整个平台或部分…

【人工智能】Linux系统Mamba安装流程

在编译安装 mamba 之前&#xff0c;你需要确保已安装正常的PyTorch环境。 # 安装必要的系统依赖 sudo apt update sudo apt install build-essential # 安装mamba依赖 pip install packaging wheel # 克隆仓库 git clone https://github.com/Dao-AILab/causal-conv1d.git git …

【python】修改字典的内容

person {"name": "John", "age": 30, "city": "New York"} print("最开始的信息&#xff1a;",person)def process_person_info(person):# 检查对象中是否包含所有必要的键if name in person and age in person …

计算机人工智能前沿进展-大语言模型方向-2024-09-22

计算机人工智能前沿进展-大语言模型方向-2024-09-21 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦&#xff0c;而且对计算机人工智能研究也带来新的思考。在本期的论文速读中&#xff0c;我们带来一篇关于视觉语言模型&#xff08;VLMs&#xf…

Java只有国人在搞了?

从Java诞生到现在&#xff0c;在全球一直属于最大的开发平台&#xff0c;拥有着世界上最多的开发者和最活跃的社区。你说Java只有国人在搞就有点过分了&#xff0c;Java中常用的主流框架全是外国人写的&#xff0c;虽说阿里也为Java做了很多贡献&#xff0c;但你还真没有资格说…

英伟达RTX 4090即将在10月份停产,RTX 50震撼来袭,你准备好了吗?

据多家媒体报道&#xff0c;英伟达&#xff08;NVIDIA&#xff09;及其合作伙伴计划于2024年10月停止生产其旗舰级显卡GeForce RTX 4090及其衍生型号RTX 4090D。尽管该计划尚未得到官方正式确认&#xff0c;但多家媒体和供应链消息均指出&#xff0c;这一决定旨在为即将到来的新…