嵌入式學習day29 指針復習

1.指針:
? ? 1.提供一種間接訪問數據的方法
? ? 2.空間沒有名字,只有一個地址編號

2.指針:
? ? 1.地址:區分不同內存空間的編號
? ? 2.指針:指針就是地址,地址就是指針
? ? 3.指針變量:存放指針的變量稱為指針變量,簡稱為指針

3.指針的定義:
? ? int *p = NULL;
? ? int *q = NULL;
? ? char *p = NULL;
? ? double *p = NULL;
? ? struct student *p = NULL;

? ? 野指針:指向隨機空間的指針
? ? 空指針:指向內存地址為0x0的空間的指針

? ? 注意:定義指針一定要初始化,防止成為野指針

4.指針的運算符:
? ? *: *p作為右值:獲得指針指向空間中的值?
? ? ? ?*p作為左值:將右值放入指針指向的空間

? ? &:獲得一個變量在內存空間中的首地址

5.指針的算數運算:
? ? +
? ? -
? ? ++
? ? --

? ? p+1:向內存高地址偏移指向的數據類型大小個字節空間
? ? p-q:兩個地址中間差了多少個指向的數據類型
? ??
6.不同類型的指針操作上有哪些不同
? ? char *p;
? ? int *p;
? ? double *p;
? ? struct student *p; ? ?

==================================================================================================================================================


1.指針數組和數組指針:


? ? 數組指針:
? ? ? ? int (*a)[5]
? ? ? ? 定義一個指針變量a,占8個字節空間,指向20個字節空間

? ? ? ? int a[5] = {1, 2, 3, 4, 5};
? ? ? ??
? ? ? ? a == &a[0] == int *
? ? ? ? 注意:
? ? ? ? ? ? 大部分情況下a可以理解為int*型,有2中特殊情況除外
? ? ? ? ? ? 1.sizeof運算時 ?
? ? ? ? ? ? ? ? sizeof(a): 20
? ? ? ? ? ? ? ? sizeof(int *): 8
? ? ? ? ? ? 2.&運算符
? ? ? ? ? ? ? ? &a:int (*)[5]
? ? ? ? ? ? ? ? &int *: int **?

? ? ? ?? 數組指針特點:
? ? ? ? ? ? 1.對一維數組數組名&得到數組指針,值不變,類型升級為指向整個數組的指針
? ? ? ? ? ? 2.對數組指針*,值不變,類型降級為指向數組第一個元素的指針

? ? 指針數組:
? ? ? ? int *a[5];
? ? ? ? 定義一個數組a,有5個元素,每個元素為int *型,占40個字節空間

? ? ? ? char *pstr[5];

? ? ? ? 操作多個字符串時,通過將每個指針指向一個字符串開頭,完成對所有字符串的操作,使用指針數組

? ? ? ? 指針數組和二維數組的區別:
? ? ? ? ? ? 存儲字符串數組使用二維數組
? ? ? ? ? ? 操作字符串數組使用指針數組

指針和數組的關系:


? ? 1.指針和一維數組的關系:
? ? ? ? int a[5] = {1, 2, 3, 4, 5};
? ? ? ? int *p = NULL;

? ? ? ? p = &a[0];
? ? ? ? p = a;

? ? ? ? 數組的數組名是指向數組第一個元素的指針

? ? ? ? a == a[0]

? ? ? ? 訪問第n個元素:
? ? ? ? a[n] == *(a+n) == *(p+n) == p[n]

? ? 2.指針和二維數組的關系:
? ? ? ? int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
? ? ? ? int *p = NULL;
? ? ? ? int (*q)[3] = NULL;

? ? ? ? p = &a[0][0];
? ? ? ? p = a[0];
? ? ? ? p = *a;
? ? ? ? q = a;

? ? ? ? 數組的數組名a是指向數組第一行元素的數組指針

? ? ? ? 訪問第m行第n列元素方式(N是每行的列數):
? ? ? ? a[m][n]
? ? ? ? *(a[m]+n)
? ? ? ? *(*(a+m)+n)
? ? ? ? *(p+m*N+n)
? ? ? ? *(*(q+m)+n)
? ? ? ? *(q[m]+n)
? ? ? ? q[m][n]

? ? 3.指針操作字符串(字符串的遍歷)
? ? ? ? char str[32] = {"hello world"};
? ? ? ? char *p = NULL;

? ? ? ? p = str;?
? ? ? ? while (*p != '\0')
? ? ? ? {
? ? ? ? ? ? p++;
? ? ? ? }

函數指針和指針函數:


? ? 函數指針:
? ? ? ? int (*p)(int, int) = NULL;
? ? ? ? 定義一個指針變量p,p是指向一個int返回值且有2個int參數的函數的指針

? ? 指針函數:
? ? ? ? int *p(int a, int b)
? ? ? ? {

? ? ? ? }

? ? ? ? 定義一個函數,函數的返回值是指針

? ? ? ? 注意:
? ? ? ? ? ? 絕對不能返回局部變量的地址,否則函數調用結束后,會清除局部變量的空間(棧),應該返回例如數據區的地址,這樣函數調用結束后,仍可通過返回的地址訪問數據區的數據。

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

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

相關文章

MyBatis中 #{} 和 ${} 區別

Mybatis的Mapper映射文件中,有兩種方式可以引用形參變量進行取值: #{} 和 ${}。本文將簡述兩種方式的區別和適用場景 取值引用 #{} 方式 #{}: 解析為SQL時,會將形參變量的值取出,并自動給其添加引號。 例如:當實參username&quo…

AI 筆記助手,你的思路整理助手

大家好,今天給大家介紹一款非常實用的 AI 筆記助手——AI Note。這款助手就像是一個貼心的小助手,能幫助我們整理筆記,提高學習和工作效率。 🤖 AI Note 可以智能總結筆記內容,準確標記重點,讓我們更快地獲…

final關鍵字有什么作用

final關鍵字在Java中用于聲明變量、方法和類,表示它們的值或行為不能被修改。 被 final 修飾的類不可以被繼承 被 final 修飾的方法不可以被重寫 被 final 修飾的變量不可變,被 final 修飾的變量必須被顯式第指定初始值,還得注意的是&#…

學習助手:借助AI大模型,學習更高效!

在當今的數字時代,人工智能(AI)的崛起已經徹底改變了我們獲取信息、處理數據以及學習新知識的方式。AI大模型,特別是如OpenAI開發的GPT-4這類先進的技術,已成為學習和教育領域的一大助力。本文旨在探索如何借助AI大模型…

了解 SYN Flood 攻擊

文章目錄: 什么是 SYN Flood 攻擊?對網絡的影響SYN Flood 發生的跡象如何解決? 什么是 SYN Flood 攻擊? SYN Flood(SYN 洪水攻擊)是一種常見的分布式拒絕服務(DDoS - Distributed Denial of Se…

購買騰訊云服務器請先領取代金券,2024騰訊云優惠

騰訊云優惠代金券領取入口共三個渠道,騰訊云新用戶和老用戶均可領取8888元代金券,可用于云服務器等產品購買、續費和升級使用,阿騰云atengyun.com整理騰訊云優惠券(代金券)領取入口、代金券查詢、優惠券兌換碼使用方法…

FL Studio選購指南:新手小白應該選擇哪個版本FL Studio?

很多打算入手正版FL Studio的新手朋友都會糾結一個問題:哪個版本的FL Studio更適合我,到底應該入手哪一款FL Studio?本文會介紹每個版本之間的差異點,并帶大家選擇適合自己的FL Sudio版本。 FL Studio全版本 在選購前有一些小知識…

UE5常見問題處理筆記

一、C工程中的文件出現很多頭文件找不到,比如:#include CoreMinimal.h文件提示找不到。 解決方法:在UE編輯器中選擇菜單Tools -> Refresh Visual Studio Project。 二、莫名其妙的編譯錯誤。 解決方法,找到工程根目錄下的Bi…

GO流程控制

1. if else 在Go語言中,關鍵字if是用于測試某個條件(布爾型或邏輯型)的語句,如果該條件成立,則會執行 if 后由大括號{}括起來的代碼塊,否則就忽略該代碼塊繼續執行后續的代碼。 if condition {// 條件為真…

qwen.cpp

1、Release模式 git clone --recursive https://github.com/QwenLM/qwen.cpp && cd qwen.cpp git submodule update --init --recursive python3 qwen_cpp/convert.py -i /mnt/workspace/qwen.cpp/Qianwen/qwen/Qwen-7B-Chat -t q4_0 -o qwen7b-ggml.bincmake -B buil…

什么是MAC地址? win10電腦查看MAC地址的多種方法

您是否知道連接到家庭網絡的每件硬件都有自己的身份?正如每個設備都分配有自己的 IP 地址一樣,每個硬件都有一個唯一的網絡標識符。 該標識符稱為MAC 地址。MAC 代表媒體訪問控制。您可能需要 MAC 地址來解決網絡問題或配置新設備。在 Windows 中查找您…

three.js 點乘判斷平行向量方向異同

效果&#xff1a; 代碼&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div>判斷的前提是兩個向量平行<el-button click"judge"…

一文掌握大模型提示詞技巧:從戰略到戰術

作者&#xff1a;明明如月學長&#xff0c; CSDN 博客專家&#xff0c;大廠高級 Java 工程師&#xff0c;《性能優化方法論》作者、《解鎖大廠思維&#xff1a;剖析《阿里巴巴Java開發手冊》》、《再學經典&#xff1a;《Effective Java》獨家解析》專欄作者。 熱門文章推薦&am…

pytest 的 request fixture:實現個性化測試需求

在前文章中&#xff0c;我們看到pytest_repeat源碼中有這樣一段 pytest.fixture def __pytest_repeat_step_number(request):marker request.node.get_closest_marker("repeat")count marker and marker.args[0] or request.config.option.count......看到參數為r…

Stable Cascade又升級了,現在只需要兩個模型

Stable Cascade這個模型&#xff0c;大家如果還有印象的話&#xff0c;是需要下載三個模型的&#xff0c;分別是Stage_a,Stage_b和Stage_c,如果全都下載下來&#xff0c;需要20多個G&#xff0c;但是最近使用ComfyUI做嘗試的時候&#xff0c;發現官方的案例中已經沒有用到單獨的…

手擼AI-2: 設置腳本參數與設置隨機種子

一.設置腳本參數 1. 代碼示例 在完整的模型訓練代碼中,我們時常能看到通過python train.py --params 來訓練模型,這也是在無UI界面的服務器上訓練模型最主要的方法,因此使用腳本并設置腳本參數尤為重要. 我們通常會將腳本設置的代碼寫在config,py中,再用訓練主函數main.py進行…

P4715 【深基16.例1】淘汰賽題解

題目 有&#xff08;n≤7&#xff09;個國家參加世界杯決賽圈且進入淘汰賽環節。已經知道各個國家的能力值&#xff0c;且都不相等。能力值高的國家和能力值低的國家踢比賽時高者獲勝。1號國家和2號國家踢一場比賽&#xff0c;勝者晉級。3號國家和4號國家也踢一場&#xff0c;…

C++用臨時對象構造新對象

C用臨時對象構造新對象 //用臨時對象構造同類型的新對象&#xff0c;該臨時對象不產生&#xff1b; // 直接用生成臨時對象的方法構造新對象&#xff0c;這是編譯器對代碼的優化&#xff0c;效率更高 #include<iostream> using namespace std; class MyClass { public:…

Golang 調度器 GPM模型

Golang 調度器 GPM模型 1 多進程/線程時代有了調度器需求 在多進程/多線程的操作系統中&#xff0c;就解決了阻塞的問題&#xff0c;因為一個進程阻塞cpu可以立刻切換到其他進程中去執行&#xff0c;而且調度cpu的算法可以保證在運行的進程都可以被分配到cpu的運行時間片。這…

chatgpt:還有哪些人工智能和科技值得關注?

今天&#xff0c;很多人的目光都被ChatGPT吸引&#xff0c;其實&#xff0c;人工智能的范圍很大&#xff0c;遠不止ChatGPT或者其他自然語言的處理工具。所以說不管ChatGPT的結果如何&#xff0c;人工智能依然是未來。 那么在ChatGPT之外&#xff0c;還有沒有什么值得關注的人…