C基础(学习)2024.7.23

    Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换相关知识可以查看文档http://t.csdnimg.cn/CmqhC

        数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2

        运算符和输表达式,输入输出相关知识可以查看文档http://t.csdnimg.cn/FJe89

        控制语句,if-else,switch-case,for,while,do-while,循环控制语句相关知识可以产看文档http://t.csdnimg.cn/zskY3

        一维数组,字符数组相关知识可以查看文档http://t.csdnimg.cn/1weqY

        排序(冒泡排序和选择排序),二维数组相关知识可以查看文档http://t.csdnimg.cn/hvo5C

目录

指针

概念

格式

指针操作符

初始化和赋值

1.普通变量的地址赋值给指针变量

2.数组首地址赋值给指针变量

3.将指针变量里卖弄保存的地址赋值给另一个指针变量

指针运算

1.算术运算:+ -

(1)对指针加减操作其实是让指针向前或向后移动

(2)指针偏移字节

2.关系运算:< > == !=

指针的大小

指针修饰

1.const常量化

(1)修饰普通变量

        修饰局部变量:

        修饰全局变量

指针

概念

        地址:内存中每个字节单位都有一个编号(一般用十六进制表示)

        指针:指针就是地址

        指针变量:用于存放地址的变量

格式

        存储类型 数据类型 * 指针变量名;

        数据类型: 代表指针所指空间存放的数据的数据类型

        例如:int a=10;

                   int *p=&a;

        访问指针所指空间的内容时用取内容运算符*

指针操作符

        &:取地址,取变量的地址

        *:取内容,取地址里面的内容

        *&a = a;           //*和&是互逆运算(抵消)

        &*a;         //错误 (原因:运算符优先级)

初始化和赋值

        指针变量在使用前不仅要定义还要初始化,未初始化的指针变量不能随便使用,不然会产生野指针。

1.普通变量的地址赋值给指针变量

int a=5;

int *p=&a;

2.数组首地址赋值给指针变量

char s[]="hello";

char *p=s;

3.将指针变量里卖弄保存的地址赋值给另一个指针变量

int a=10;

int *p=&a;

*q=p;

指针运算

1.算术运算:+ -

(1)对指针加减操作其实是让指针向前或向后移动

        p+n:  访问高地址方向的第n个数据的地址,指针指向不改变。

        p-n: 访问低地址方向的第n个数据的地址,指针指向不改变。

(2)指针偏移字节

        偏移字节数=偏移量*数据类型大小

        两个地址之间的差= 两个地址之间相隔元素的个数

        p-q = 直接按相隔元素个数

2.关系运算:< > == !=

        指针之间关系运算比较的是它指向地址的高低

        指向高地址的指针大于指向低地址的指针

        注意:指向不同类型的数组指针关系运算没有意义,指向不同区域的指针关系运算也没有意义,需要同一个数组间进行比较

例题:利用指针判断输入的字符串是否为回文数

#include <stdio.h>
#include <string.h>
int main()
{char s[100];gets(s);int len = strlen(s);char *p = s;int flag = 0;for (int i = 0; i < len; i++){if (*(p + i) != *(p + len - i - 1)){printf("不是回文数\n");flag++;break;}}if (flag == 0){printf("是回文数\n");}return 0;
}

指针的大小

计算指针变量大小:siezof(指针变量名);

总结:

        1.  32位操作系统,指针大小4字节,64位操作系统,指针大小8字节

        2.内存地址是固定的,但是变量的地址不固定的(栈区变量随机分配)

        3.指针类型根据指针指向空间的数据类型

指针修饰

1.const常量化

注意:const定义变量时必须在定义的时候就给它赋初值。

(1)修饰普通变量
        修饰局部变量:

                        const int a=10;        //int const a=10; 

                        此时a只读,不可以修改。但是可以通过指针修改。

                        int *p=&a;

                       *p=20; //可以用指针间接修改,会报警告。

        修饰全局变量:

                        放在常量区,不能通过指针修改,会报段错误

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

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

相关文章

.mp4格式的视频为何不能通过video标签在chrome浏览器中播放?

chrome浏览器目前只支持编解码格式为H264格式的视频&#xff0c;如果某个.mp4后缀的视频不能在chrome浏览器中播放&#xff0c;多半是这个视频的编码格式不是H264的&#xff01; 1、可以通过ffmpeg工具查看当前视频的编码格式&#xff1a; ffprobe -v error -select_streams v…

JS_plus.key.addEventListener监听键盘按键

官方文档&#xff1a;https://www.html5plus.org/doc/zh_cn/key.html 监听事件 plus.key.addEventListener(keydown, e > {console.log("keydown: "e.keyCode) }) plus.key.addEventListener(keyup, e > {console.log("keyup: "e.keyCode) })移除事…

arcgis api for js4.x实现点击GraphicsLayer上绘制的Graphic获取Graphic中的attributes中的信息

需求&#xff1a;arcgis api for js4.x 在Map地图中添加GraphicsLayer图层&#xff0c;在GraphicsLayer图层添加绘制graphics点&#xff0c;点击绘制的点&#xff0c;获取graphics点中的attributes中的信息 var cityCenter new Point(116, 36, new SpatialReference({ wkid: …

leetcode日记(48)排列序列

这道题想到了规律就不算难&#xff0c;列了好几个示例想出的规律&#xff0c;试着排序几个就会了 class Solution { public:string getPermutation(int n, int k) {string result;int m1;int i1;for(i;i<n;i) m*i;i--;int pm/i;string s;for(int j0;j<n;j) s.append(to_…

Vue 3 和 SpringBoot 实现文件分片上传示例

前端实现&#xff08;Vue 3和vue-upload-component&#xff09; 安装 vue-upload-component&#xff1a; npm install vue-upload-component --save创建一个Vue组件用于上传文件&#xff08;FileUploader.vue&#xff09;&#xff1a; <template><div><file-…

基于VUE的软件项目开发管理系统/项目管理系统/软件开发过程管理系统的设计与实现

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括软件项目开发管理系统的网络应用&#xff0c;在外国软件项目开发管理系统已经是很普遍的方式&#xff0c;不过国内的软件项目开发管理可能还处于起步阶段。软件项目开发…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…

【ffmpeg命令基础】视频选项讲解

文章目录 前言设置输出文件的帧数设置每秒播放的帧数设置输出视频的帧率示例1&#xff1a;更改输出视频的帧率示例2&#xff1a;将图像序列转换为视频 设置输入视频的帧率示例3&#xff1a;处理高帧率视频示例4&#xff1a;处理低帧率视频 同时设置输入和输出帧率示例5&#xf…

QtCreator和QtDesignStudio最佳实践

一、QTC和QDS工作流概述 很多初学者对 QDS(Qt Design Studio) 和 QTC(Qt Creator)如何配合经常存有疑问&#xff0c;本文介绍具体的工作流程。 工作流程 1.产品设计&#xff1a;通过PS、Figma、XD等专业工具设计页面视觉和原型。 2.QDS 原型制作&#xff1a;导入设计源文件、…

C++五子棋(未做完,但能玩,而且还不错)

代码放下面了&#xff0c;关于步骤介绍的我以后再完善一下。 #include<bits/stdc.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x…

go 用字面量的方式创建对象

在 Go 语言中&#xff0c;可以使用字面量的方式创建对象&#xff08;结构体&#xff09;。这种方法可以简洁地初始化结构体&#xff0c;并且可以在定义和赋值时同时完成。 下面是一个示例代码&#xff0c;展示了如何使用字面量的方式创建一个结构体对象&#xff1a; package …

线程局部变量共享 -- 使用ThreadLocal解决该需求

1.创建容器类 //容器类 public class Contain {private static final ThreadLocal<DataPackage> local;static {local new ThreadLocal<>();}public static ThreadLocal<DataPackage> getLocal() {return local;} } 2.创建数据包类 //数据包类 public cl…

react中如何mock数据

1.需求说明 因为前后端分离开发项目&#xff0c;就会存在前端静态页面写好了&#xff0c;后端数据接口还没写好&#xff1b;这时候前端就需要自己定义数据来使用。 定义数据有三种方式&#xff1a;直接写死数据、使用mock软件、json-server工具 这里讲解通过json-server工具…

脉冲编码调制(PCM,Pulse Code Modulation)简介

脉冲编码调制(PCM,Pulse Code Modulation) 脉冲编码调制&#xff08;PCM&#xff0c;Pulse Code Modulation&#xff09;是一种将模拟信号转换为数字信号的技术。在音频处理、电话通信以及其他许多领域都有广泛应用。PCM通过采样、量化、编码等三个主要步骤将模拟信号转换为数…

C#基础入门:从安装到第一个Hello World程序

在编程的世界里&#xff0c;C#是一种备受推崇的编程语言&#xff0c;它以其强大的功能、面向对象的特性和对.NET框架的深度集成而闻名。无论你是编程新手还是寻求新挑战的资深开发者&#xff0c;C#都是一个值得探索的领域。本文将带你踏上C#编程的旅程&#xff0c;从安装必要的…

如何通过一条SQL变更多个分库分表?

数据库发展到今天&#xff0c;分库分表已经不是什么新鲜话题了&#xff0c;传统的单节点数据库架构在数据量和访问频次达到一定规模时&#xff0c;会出现性能瓶颈和扩展性问题&#xff0c;而分库分表技术通过将数据分散到多个数据库实例中来分担负载&#xff0c;从而提升系统的…

力扣第二十九题——两数相除

内容介绍 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.345 将被截断为 8 &#xff0c;-…

Electron的入门介绍与使用(1)共30节

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门指南​ Electron 是网页应用 …

IEDA怎么把springboot项目 启动多个

利用Idea提供的Edit Configurations配置应用参数。 点击Modify Options进行添加应用参数&#xff1a; 确保这里勾选

宿舍生活新升级:智能指纹锁的便捷体验(嘉立创EDA设计)

宿舍生活新升级&#xff1a;智能指纹锁的便捷体验 引言 宿舍生活总是充满挑战和乐趣&#xff0c;但有时也会因为一些小事情而变得复杂。比如&#xff0c;忘记带钥匙或者需要频繁地给室友开门。随着科技的发展&#xff0c;智能设备逐渐走进我们的生活&#xff0c;为日常带来便…