C語言之數組指針和指針數組

C語言之數組指針和指針數組

  • 一、含義
    • 二、定義
      • 2.1 指針數組
      • 2.2 數組指針
    • 三、使用
      • 3.1 指針數組在參數傳遞時的使用
      • 3.1.1 指針數組的排序
      • 3.2 數組指針在參數傳遞時的使用

一、含義

  • 指針數組:顧名思義,其為一個數組,數組里面存放著多個指針,指針的類型可選。

  • 數組指針:數組指針實質上就是一個指針,用”數組”修飾這個指針,意思是說這個指針存放著一個數組的首地址,或者說這個指針指向一個數組的首地址。

    明白了吧,小伙子們。

二、定義

2.1 指針數組

char* (char_array[3]) = {"hello", "world", "GGBod"}; //擁有3個元素的數組,每個元素是一個char類型的指針,總大小為 3*4=12 個字節
int* (int_array[4]) = {1, 2, 3, 4};
struct Student* (struct_array[2]) = {{xxx} ,{xxx}};

上述括號可去掉,這里只是方便大家理解。

2.2 數組指針

char (*char_point)[3];  //這里的括號便不可去掉,用于指明這是一個指針

這里是一個指向一個擁有三個char類型元素的數組的指針,它指向數組的首地址,當執行 char_point++ 時,char_point會加3。

三、使用

3.1 指針數組在參數傳遞時的使用

  • 指針數組常用在主函數傳參,在寫主函數時,參數有兩個,一個確定參數個數,另一個指針數組用來接收每個參數(字符串)的地址。
int main(int argc, char *argv[])

此時可以想象內存映像圖,主函數的棧區有一個叫argv的數組,這個數組的元素是你輸入的參數的地址,指向著只讀數據區。

  • 如果是向子函數傳參,這和傳遞一個普通數組的思想一樣,不能傳遞整個數組過去,如果數組很大,這樣內存利用率很低,所以應該傳遞數組的首地址,用一個指針接收這個地址。因此,指針數組對應著二級指針。
void fun(char **pp); //子函數中的形參
fun(char *p[]);      //主函數中的實參

3.1.1 指針數組的排序

#include "stdio.h"
#include "string.h"
void sort(char **pa, int n) // 冒泡排序
{int i, j;char *tmp = NULL;for (i = 0; i < n - 1; i++){for (j = 0; j < n - 1 - i; j++){if ((strcmp(*(pa + j), *(pa + j + 1))) > 0){tmp = *(pa + j);*(pa + j) = *(pa + j + 1);*(pa + j + 1) = tmp;}}}
}int main(void)
{char *pa[4] = {"abc", "xyz", "opq", "jiok"};sort(pa, 4);for (int i = 0; i < 4; i++){printf("%s\n", pa[i]);}return 0;
}

3.2 數組指針在參數傳遞時的使用

void fun(int (*P)[4]);//子函數中的形參,指針數組 a[3][4] = {0};//主函數中定義的二維數組
fun(a);//主函數調用子函數的實參,是二維數組的首元素首地址

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

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

相關文章

C#生成隨機驗證碼

以下是一個簡單的C#驗證碼示例&#xff1a; private void GenerateCaptcha() {// 生成隨機字符串string chars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";Random random new Random();string captchaString new string(Enumerable.Repe…

TPAMI, 2023 | 用壓縮隱逆向神經網絡進行高精度稀疏雷達成像

CoIR: Compressive Implicit Radar | IEEE TPAMI, 2023 | 用壓縮隱逆向神經網絡進行高精度稀疏雷達成像 注1:本文系“無線感知論文速遞”系列之一,致力于簡潔清晰完整地介紹、解讀無線感知領域最新的頂會/頂刊論文(包括但不限于Nature/Science及其子刊;MobiCom, Sigcom, MobiSy…

Java【算法 04】HTTP的認證方式之DIGEST認證詳細流程說明及舉例

HTTP的認證方式之DIGEST 1.是什么2.認值流程2.1 客戶端發送請求2.2 服務器返回質詢信息2.2.1 質詢參數2.2.2 質詢舉例 2.3 客戶端生成響應2.4 服務器驗證響應2.5 服務器返回響應 3.算法3.1 SHA-2563.1.1 Response3.1.2 A13.1.3 A2 3.2 MD53.2.1 Request-Digest3.2.2 A13.2.3 A2…

CSS3 中新增了哪些常見的特性?

聚沙成塔每天進步一點點 ? 專欄簡介? 圓角&#xff08;Border Radius&#xff09;? 漸變&#xff08;Gradients&#xff09;? 陰影&#xff08;Box Shadow&#xff09;? 文本陰影&#xff08;Text Shadow&#xff09;? 透明度&#xff08;Opacity&#xff09;? 過渡&…

Spring boot與Spring cloud 之間的關系

Spring boot與Spring cloud 之間的關系 Spring boot 是 Spring 的一套快速配置腳手架&#xff0c;可以基于spring boot 快速開發單個微服務&#xff0c;Spring Boot&#xff0c;看名字就知道是Spring的引導&#xff0c;就是用于啟動Spring的&#xff0c;使得Spring的學習和使用…

MATLAB中xlsread函數用法

目錄 語法 說明 示例 將工作表讀取到數值矩陣 讀取元胞的范圍 讀取列 請求數值、文本和原始數據 對工作表執行函數 請求自定義輸出 局限性 xlsread函數的功能是讀取Microsoft Excel 電子表格文件 語法 num xlsread(filename) num xlsread(filename,sheet) num x…

Nacos和GateWay路由轉發NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find

問題再現&#xff1a; 2023-08-15 16:51:16,151 DEBUG [reactor-http-nio-2][CompositeLog.java:147] - [dc73b32c-1] Encoding [{timestampTue Aug 15 16:51:16 CST 2023, path/content/course/list, status503, errorService Unavai (truncated)...] 2023-08-15 16:51:16,17…

leetcode27—移除元素

思路&#xff1a; 參考26題目雙指針的思想&#xff0c;只不過這道題不是快慢指針。 看到示例里面數組是無序的&#xff0c;也就是說后面的元素也是可能跟給定 val值相等的&#xff0c;那么怎么處理呢。就想到了從前往后遍歷&#xff0c;如果left對應的元素 val時&#xff0c…

汽車制造業上下游協作時 外發數據如何防泄露?

數據文件是制造業企業的核心競爭力&#xff0c;一旦發生數據外泄&#xff0c;就會給企業造成經濟損失&#xff0c;嚴重的&#xff0c;可能會帶來知識產權剽竊損害、名譽傷害等。汽車制造業&#xff0c;會涉及到重要的汽車設計圖紙&#xff0c;像小米發送汽車設計圖紙外泄事件并…

[足式機器人]Part5 機械設計 Ch00/01 緒論+機器結構組成與連接 ——【課程筆記】

本文僅供學習使用 本文參考&#xff1a; 《機械設計》 王德倫 馬雅麗課件與日常作業可登錄網址 http://edu.bell-lab.com/manage/#/login&#xff0c;選擇觀摩登錄&#xff0c;查看2023機械設計2。 機械設計-Ch00Ch01——緒論機器結構組成與連接 Ch00-緒論0.1 何為機械設計——…

12.Eclipse導入Javaweb項目

同事復制一份他的項目給我ekp.rar (懶得從SVN上拉取代碼了)放在workspace1目錄下 新建一個文件夾 workspace2&#xff0c;Eclipse切換到workspace2工作空間 選擇Import導入 選擇導入的項目(這里是放到workspace1里面) 拷貝一份到workspace2里面 例子 所有不是在自己電腦上開發…

可白嫖的4家免費CDN,并測試其網絡加速情況(2023版)

網站加載速度優化過程中&#xff0c;不可避免的會用上CDN來加速資源的請求速度。但是市面上的CDN資源幾乎都是要收費的&#xff0c;而且價格還不便宜&#xff0c;對于小公司站長來講&#xff0c;這將是一筆不小的開銷。不過還是有一些良心公司給我們提供了免費的資源&#xff0…

ZooKeeper的基本概念

集群角色 通常在分布式系統中&#xff0c;構成一個集群的每一臺機器都有自己的角色&#xff0c;最典型的集群模式就是Master/Slave模式(主備模式)。在這種模式中&#xff0c;我們把能夠處理所有寫操作的機器稱為Master機器&#xff0c;把所有通過異步復制方式獲取最新數據&…

Redis_億級訪問量數據處理

11. 億級訪問量數據處理 11.1 場景表述 手機APP用戶登錄信息&#xff0c;一天用戶登錄ID或設備ID電商或者美團平臺&#xff0c;一個商品對應的評論文章對應的評論APP上有打卡信息網站上訪問量統計統計新增用戶第二天還留存商品評論的排序月活統計統計獨立訪客(Unique Vistito…

【BEV】3D視覺 PRELIMINARY

這里的知識來自于論文 Delving into the Devils of Bird’s-eye-view Perception: A Review, Evaluation and Recipe 的 Appendix B.1 部分來自 這篇文章 從透視圖轉向鳥瞰圖。&#xff08;Xw、Yw、Zw&#xff09;、&#xff08;Xc、Yc、Zc&#xff09;表示世界World坐標和相…

Android學習之路(4) UI控件之Button (按鈕)與 ImageButton (圖像按鈕)

本節引言&#xff1a; 今天給大家介紹的Android基本控件中的兩個按鈕控件&#xff0c;Button普通按鈕和ImageButton圖像按鈕&#xff1b; 其實ImageButton和Button的用法基本類似&#xff0c;至于與圖片相關的則和后面ImageView相同&#xff0c;所以本節 只對Button進行講解&am…

vue自定義穿梭框支持遠程滾動加載

分享-2023年資深前端進階&#xff1a;前端登頂之巔-最全面的前端知識點梳理總結&#xff0c;前端之巔 *分享一個使用比較久的&#x1fa9c; 技術框架公司的選型(老項目)&#xff1a;vue2 iview-ui 方案的實現思路是共性的&#xff0c;展現UI樣式需要你們自定義進行更改&#…

【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring團隊不推薦使用Field注入)

問題發生場景&#xff1a; 在使用 IDEA 開發 SpringBoot 項目時&#xff0c;在 Controller 類中使用注解 Autowired 注入一個依賴出現了警告提示&#xff0c;查看其他使用該注解的地方同樣出現了警告提示。這是怎么回事&#xff1f;由于先去使用了SpringBoot并沒有對Spring進行…

分布式 - 消息隊列Kafka:Kafka消費者和消費者組

文章目錄 1. Kafka 消費者是什么&#xff1f;2. Kafka 消費者組的概念&#xff1f;3. Kafka 消費者和消費者組有什么關系&#xff1f;4. Kafka 多個消費者如何同時消費一個分區&#xff1f; 1. Kafka 消費者是什么&#xff1f; 消費者負責訂閱Kafka中的主題&#xff0c;并且從…

【數據結構OJ題】反轉鏈表

原題鏈接&#xff1a;https://leetcode.cn/problems/reverse-linked-list/description/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現 1. 題目描述 2. 思路分析 方法一&#xff1a;三指針翻轉法 使用三個結構體指針n1&#xff0c;n2&#xff0c;n3&#xff0c;原地修改結點…