最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 指針綜合解析

 更新時間:2021年11月03日 15:15:59   作者:Aerobatics  
指針可以表示一個變更的地址,在計算機程序中,通常表示內存地址,存儲數(shù)據(jù)的地址,下面這篇文章主要給大家綜合的介紹了關于C語言指針的本質與用法

指針總結

部分筆記來源于王道C語言訓練營

指針:變量的地址
指針變量:一個變量專門用來存放另一變量的地址

1.指針的本質

1.1 指針的定義

通過取地址(指針)直接訪問變量
通過指針變量間接訪問另一個變量

1.2 取地址操作符與取值操作符

注意:

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

int* p=&i;	//變量名為 p,該變量為指向整型數(shù)據(jù)的指針類型(int*)

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

float a;//浮點型變量
int* p=&a; //錯誤,整型變量的指針

(3)取地址運算符和取值運算符混用(兩運算符優(yōu)先級相同,應自右向左方向結合)

float* p=&a;
&*p;	//先解引用獲得變量a的值,再取該值的存儲地址,等價于&a
*&a;	//先取得變量a的地址,再解引用獲得a的值,等價于a

(4)連續(xù)定義多個指針變量

int* a,b,c;	//錯誤,這里只有a為整型變量的指針,b,c均為整型變量
int *a,*b,*c; //正確

2.指針的使用場景

2.1 指針的傳遞

值傳遞

點擊逐語句進入change函數(shù)體

進入函數(shù)體后點擊逐過程

為解決以上問題,引出指針傳遞

2.2 指針的偏移(指針的加減)

2.3 指針與自增、自減運算符

∗ * ∗ 和 + + ++ ++ 的優(yōu)先級相同,混合使用是自右向左看

分析時第一步:先去掉后增或后減
分析時第二步:前面符號的優(yōu)先級是否高于后增/后減的優(yōu)先級,若是則先執(zhí)行前面,否則先執(zhí)行后面

j=*p++;	等價于 j=*p; p++;

j=(*p)++; 等價于 j=*p; (*p)++;	

int a[3]={2,7,8};
int* p;
p=a;
//p[0]等價于*p
j=p[0]++;	//等價于 j=p[0]; p[0]++;	

2.4 指針與一維數(shù)組

函數(shù)調用的本質是值傳遞(實參賦值給形參)

數(shù)組名在傳遞過程中是弱化為指針的

2.5 指針與動態(tài)內存申請(malloc)

C語言的數(shù)組長度固定是因為其定義的整型、浮點型、字符型變量,數(shù)組變量都在??臻g中,而??臻g的大小在編譯時是確定的。如果使用的空間大小不確定,那么就要使用堆空間

程序是放在磁盤上的有序的指令集合

程序啟動起來才叫進程

#include<stdlib.h>
void *malloc(size_t size);	//malloc在向堆申請空間,不使用時要釋放
//void* 為無類型指針,并沒有規(guī)定指針指向什么類型的變量 
//malloc并不知道我們申請的空間用來存放什么類型的數(shù)據(jù),
//所以確定要用來存儲什么類型后,都會將void*強制轉換為對應的類型

申請堆空間

釋放所申請的堆空間

#include<stdlib.h>
void free(void *ptr);

free(p);
p=NULL;	//如果不把p置為NULL,我們把 p稱為野指針
??臻g與堆空間的區(qū)別

函數(shù)??臻g釋放后,函數(shù)內的所有局部變量消失。
??臻g會隨函數(shù)的結束而釋放

堆空間不會因函數(shù)執(zhí)行結束而釋放

2.6 字符指針與字符數(shù)組的初始化

char* p="hello";	//字符指針,把字符串常量"hello"的首地址賦給p
char c[10]="hello";	//字符數(shù)組初始化,等價于 strcpy(c,"hello")

3.二級指針

二級指針只服務于一級指針的傳遞與偏移

3.1 二級指針的傳遞

要想在子函數(shù)中改變一個變量的值,必須把該變量的地址傳進去
要想在子函數(shù)中改變一個指針變量的值,必須把該指針變量的地址傳進去

int* p;
int **p1;
p1=&p;	//二級指針的初始化一定是某一個一級指針取地址,&p就是一個二級指針類型

二級指針示例:

一級指針示例:

到此這篇關于C語言 指針綜合解析的文章就介紹到這了,更多相關C語言 指針內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++從匯編的視角審視對象的創(chuàng)建問題

    C++從匯編的視角審視對象的創(chuàng)建問題

    這篇文章主要介紹了C++從匯編的視角看對象的創(chuàng)建,從匯編的視角來看,調用構造器和調用 “返回對象” 的函數(shù)是一樣的,從匯編的角度來看,對象就是一堆數(shù)據(jù)的排列,比如說最普通的對象就是數(shù)據(jù)成員按照聲明順序直接排列,需要的朋友可以參考下
    2022-01-01
  • C++解析wav文件方法介紹

    C++解析wav文件方法介紹

    最近將項目改為跨平臺,于是音頻模塊從微軟的XAudio2改用OpenAL庫。之前使用MSDN的代碼,所以現(xiàn)在改為了C++標準的寫法,適用性更廣
    2022-09-09
  • 詳解C++編程中的條件判斷語句if-else與switch的用法

    詳解C++編程中的條件判斷語句if-else與switch的用法

    這篇文章主要介紹了C++編程中的條件判斷語句if-else與switch的用法,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • 項目之C++如何實現(xiàn)數(shù)據(jù)庫連接池

    項目之C++如何實現(xiàn)數(shù)據(jù)庫連接池

    這篇文章主要介紹了項目之C++如何實現(xiàn)數(shù)據(jù)庫連接池問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • C++中vector的用法實例解析

    C++中vector的用法實例解析

    這篇文章主要介紹了C++中vector的用法,詳細描述了vector的各種常見的用法及注意事項,需要的朋友可以參考下
    2014-08-08
  • C語言深入講解動態(tài)內存分配函數(shù)的使用

    C語言深入講解動態(tài)內存分配函數(shù)的使用

    這篇文章主要介紹了C語言動態(tài)內存分配,C語言內存管理相關的函數(shù)主要有realloc、calloc、malloc、free、柔性數(shù)組等,下面這篇文章帶大家了解一下
    2022-05-05
  • C++實現(xiàn)簡單學生信息管理系統(tǒng)

    C++實現(xiàn)簡單學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實現(xiàn)日期類的方法詳解

    C++實現(xiàn)日期類的方法詳解

    這篇文章主要給大家介紹了C++實現(xiàn)日期類的方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • C語言數(shù)組實現(xiàn)掃雷游戲

    C語言數(shù)組實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言數(shù)組實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++實現(xiàn)日期類(Date類)的方法

    C++實現(xiàn)日期類(Date類)的方法

    下面小編就為大家?guī)硪黄狢++實現(xiàn)日期類(Date類)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01

最新評論

九江县| 屯留县| 汉源县| 天镇县| 色达县| 丽江市| 和林格尔县| 九江市| 天台县| 湖口县| 罗城| 北辰区| 卢氏县| 淮滨县| 饶河县| 乐安县| 怀远县| 玛多县| 武功县| 枝江市| 扶沟县| 庆城县| 五河县| 小金县| 太谷县| 新乡市| 台中县| 梁山县| 汉沽区| 高密市| 财经| 崇州市| 军事| 宣城市| 手机| 冕宁县| 屯门区| 天门市| 浦江县| 兴山县| 长沙县|