国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

這篇具有很好參考價(jià)值的文章主要介紹了【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

接著上次的函數(shù)的基本知識(shí),今天我們來講一講??指針

目錄

一、指針的概念

二、指針變量

三、野指針

四、字符指針

五、指針與數(shù)組

六、指針數(shù)組

七、數(shù)組指針

?八、指針與函數(shù)

總結(jié)


一、指針的概念

1.1、變量和地址

所謂指針,也就是內(nèi)存的地址;所謂指針變量,也就是保存了內(nèi)存地址的變量。

總結(jié):指針就是變量,用指針存放地址(口語中說的指針通常指的是指針變量)?

1.2、指針變量和指針的類型

指針變量就是一個(gè)變量,它存儲(chǔ)的內(nèi)容是一個(gè)指針。在我們定義一個(gè)變量的時(shí)候,要確定它的類型。在定義指針變量時(shí)也是一樣的,必須確定指針類型。int 變量的指針需要用 int 類型的指針存儲(chǔ),float 變量的指針需要用 float 類型的指針存儲(chǔ)。

?指針類型決定了:指針解引用的權(quán)限有多大與指針走一步走多大字節(jié)(步長(zhǎng))

整型指針+1跳過一個(gè)整型。字符指針+1跳過一個(gè)字符

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....


二、指針變量

2.1、指針變量的定義及使用

(1)指針變量的定義

指針變量的定義形式如:數(shù)據(jù)類型 *指針名;例如:

int* x;//整型指針變量
float* f;//浮點(diǎn)型指針變量
char* ch;//字符型指針變量

指針的變量名分別是:x;f和ch。而int*;float*與char*分別是他們中存儲(chǔ)的數(shù)據(jù)的類型。?

(2)指針變量的使用

取地址運(yùn)算符&:?jiǎn)文窟\(yùn)算符&是用來取操作對(duì)象的地址。例:&i 為取變量 i 的地址。對(duì)于常量表達(dá)式、寄存器變量不能取地址(因?yàn)樗鼈兇鎯?chǔ)在存儲(chǔ)器中,沒有地址)。
指針運(yùn)算符*(解引用運(yùn)算符 ):與&為逆運(yùn)算,作用是通過操作對(duì)象的地址,獲取存儲(chǔ)的內(nèi)容。例:x = &i,x 為 i 的地址,*x 則為通過 i 的地址,獲取 i 的內(nèi)容。

//聲明了一個(gè)普通變量 a
int a;
//聲明一個(gè)指針變量,指向變量 a 的地址
int *pa;
//通過取地址符&,獲取 a 的地址,賦值給指針變量
pa = &a;
//通過間接尋址符,獲取指針指向的內(nèi)容
printf("%d", *pa);

2.2、指針運(yùn)算

(1)指針與整數(shù)的加減運(yùn)算

指針變量的自增自減運(yùn)算。指針加 1 或減 1 運(yùn)算,表示指針向前或向后移動(dòng)一個(gè)單元(不同類型的指針,單元長(zhǎng)度不同)。

(2)指針減指針

前提是兩個(gè)指針指向同一個(gè)空間。

指針減指針得到兩個(gè)指針間的元素個(gè)數(shù)

例: Arr[9]指向9與10中間部分(下標(biāo))

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....


三、野指針

3.1概念:

野指針就是指針指向的為止是不可知的(隨機(jī)的,不正確的,沒有明確限制的

3.2野指針的成因

(1)指針未初始化

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

(2)指針越界

如圖:在第十次 訪問時(shí),可以進(jìn)入到循環(huán),相當(dāng)于從第10個(gè)點(diǎn)向后訪問4個(gè)字節(jié),之后的字節(jié)不屬于原數(shù)組,則越界了,則稱為野指針。(只有在超出范圍后,在會(huì)發(fā)生崩潰)

//越界訪問
*int arr[10] ={ 0 };
int* p = arr;
int i=0;
for (i=0; i <= 10; i++)//共執(zhí)行了11次,而arr數(shù)組總共只有10個(gè)元素
{
    *p = i;
    p++;
}

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

(3)指針指向的空間釋放

int* test()//局部變量
{
    int a = 10;
    return &a;
}
int main()
{
    int *p=test();//返回值是a的地址,而局部變量在引用之后就會(huì)銷毀。
    *p = 20;
    return 0;
}

3.3如何規(guī)避野指針

1.指針初始化?

2.小心指針越界。

3.指針指向空間釋放即置NULL

4.指針使用之前檢查有效性。


四、字符指針

4.1字符指針類型
在指針的類型中我們知道有一種指針類型為字符指針 char* ;
一般使用:
int main()
{
 ? ?const char* pstr = "hello ";//這里是把一個(gè)字符串放到pstr指針變量里了嗎?
 ? ?printf("%s\n", pstr);
 ? ?return 0; }
本質(zhì)是把字符串 hello首字符的地址放到了pstr中。

4.2例題

int main()
{
? ?char str1[] = "hello bit.";
? ?char str2[] = "hello bit.";
? ?const char *str3 = "hello bit.";
? ?const char *str4 = "hello bit.";
? ?if(str1 ==str2)
printf("str1 and str2 are same\n");
? ?else
printf("str1 and str2 are not same\n");
? ? ?
? ?if(str3 ==str4)
printf("str3 and str4 are same\n");
? ?else
printf("str3 and str4 are not same\n");
? ? ?
? ?return 0;
}

最終輸出的結(jié)果是

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

這里str3和str4指向的是一個(gè)同一個(gè)常量字符串。C/C++會(huì)把常量字符串存儲(chǔ)到單獨(dú)的一個(gè)內(nèi)存區(qū)域。當(dāng)幾個(gè)指針指向同一個(gè)字符串的時(shí)候,他們實(shí)際會(huì)指向同一塊內(nèi)存。
但是用相同的常量字符串去初始化不同的數(shù)組的時(shí)候就會(huì)開辟出不同的內(nèi)存塊。所以str1和str2不同,str3和str4不同。

?


五、指針與數(shù)組

之前我們可以通過下標(biāo)訪問數(shù)組元素,學(xué)習(xí)了指針之后,我們可以通過指針訪問數(shù)組的元素。在數(shù)組中,數(shù)組名即為該數(shù)組的首地址,結(jié)合上面指針和整數(shù)的加減,我們就可以實(shí)現(xiàn)指針訪問數(shù)組元素。

5.1、指針與二維數(shù)組

(1)二維數(shù)組的地址

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *p=a[0];//此處的p內(nèi)存放的數(shù)組a第一行的地址。

5.2、多級(jí)指針

(1)多級(jí)指針(指向指針的指針)

指針變量作為一個(gè)變量也有自己的存儲(chǔ)地址,而指向指針變量的存儲(chǔ)地址就被稱為指針的指針,即二級(jí)指針。依次疊加,就形成了多級(jí)指針。

指針變量也是一種變量,也會(huì)占用存儲(chǔ)空間,也可以使用 &獲取它的地址。C語言不限制指針的級(jí)數(shù),每增加一級(jí)指針,在定義指針變量時(shí)就得增加一個(gè)星號(hào) *。p1 是一級(jí)指針,指向普通類型的數(shù)據(jù),定義時(shí)有一個(gè) *;p2 是二級(jí)指針,指向一級(jí)指針 p1,定義時(shí)有兩個(gè)*。例:假設(shè)有一個(gè) int 類型的變量 a,p1是指向 a 的指針變量,p2 又是指向 p1 的指針變量,它們的關(guān)系如下圖所示:

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....


六、指針數(shù)組

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

1.parr的第一個(gè)數(shù)組里放arr1的首元素地址

2.parr每個(gè)元素的類型是int*。

3.該數(shù)組里每個(gè)元素都是指針,所以它是一個(gè)指針數(shù)組

4.Parr[i][j],也可以寫成parr[i]+j,

5.相當(dāng)于地址+j為向后挨個(gè)元素指向


七、數(shù)組指針

7.1、數(shù)組指針的定義

如以下語句:

int (*p)[10];
//解釋:p先和*結(jié)合,說明p是一個(gè)指針變量,然后指著指向的是一個(gè)大小為10個(gè)整型的數(shù)組。
//所以p是一個(gè)指針,指向一個(gè)數(shù)組,叫數(shù)組指針。
//這里要注意:[]的優(yōu)先級(jí)要高于*號(hào)的,所以必須加上()來保證p先和*結(jié)合。

?7.2、&數(shù)組名與數(shù)組名

讓我們看一段代碼

#include <stdio.h>
int main()
{
 int arr[10] = { 0 };
 printf("arr = %p\n", arr);
 printf("&arr= %p\n", &arr);
 printf("arr+1 = %p\n", arr+1);
 printf("&arr+1= %p\n", &arr+1);
 return 0; 
}

?運(yùn)行結(jié)果如下

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....

根據(jù)上面的代碼我們發(fā)現(xiàn),其實(shí)&arr和arr,雖然值是一樣的,但是意義應(yīng)該不一樣的。

實(shí)際上: &arr 表示的是數(shù)組的地址,而不是數(shù)組首元素的地址。(細(xì)細(xì)體會(huì)一下)

本例中 &arr 的類型是: int(*)[10] ,是一種數(shù)組指針類型。

數(shù)組的地址+1,跳過整個(gè)數(shù)組的大小。

?7.3、數(shù)組指針的使用

#include <stdio.h>
void print_arr1(int arr[3][5], int row, int col)//形參用數(shù)組來接受
{
 ? ?int i = 0;
 ? ?for(i=0; i<row; i++)
 ? {
 ? ? ? ?for(j=0; j<col; j++)
 ? ? ? {
 ? ? ? ? ? ?printf("%d ", arr[i][j]);
 ? ? ? }}}
void print_arr2(int (*arr)[5], int row, int col)//形參用數(shù)組指針來接受  
 {
 ? ?int i = 0;
 ? ?for(i=0; i<row; i++)
 ? {
 ? ? ? ?for(j=0; j<col; j++)
 ? ? ? {printf("%d ", arr[i][j]);}
 ? ? ? ?printf("\n");}}
int main()
{
 ? int arr[3][5] = {1,2,3,4,5,6,7,8,9,10};
 ? print_arr1(arr, 3, 5);
 ? ?//數(shù)組名arr,表示首元素的地址
 ? ?//但是二維數(shù)組的首元素是二維數(shù)組的第一行
 ? ?//所以這里傳遞的arr,其實(shí)相當(dāng)于第一行的地址,是一維數(shù)組的地址
 ? ?//可以數(shù)組指針來接收
 ? ?print_arr2(arr, 3, 5);
 ? ?return 0; }

?八、指針與函數(shù)

8.1、函數(shù)指針的定義??

returnType (*pointerName)(param list);
其中,returnType 為函數(shù)返回值類型,pointerNmae 為指針名稱,param list 為函數(shù)參數(shù)列表。參數(shù)列表中可以同時(shí)給出參數(shù)的類型和名稱,也可以只給出參數(shù)的類型,省略參數(shù)的名稱,這一點(diǎn)和函數(shù)原型非常類似。
注意( )的優(yōu)先級(jí)高于*,第一個(gè)括號(hào)不能省略,如果寫作returnType *pointerName(param list);就成了函數(shù)原型,它表明函數(shù)的返回值類型為returnType *。

8.2、指向函數(shù)的指針int (*pf[4])(int,int)={Add,Sub,Mul,Div};

函數(shù)指針數(shù)組,在函數(shù)指針的基礎(chǔ)上,將指針變?yōu)橹羔様?shù)組

【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....


總結(jié)

以上就是初階指針的基本內(nèi)容了!?。?!非常感謝你能看到這里!

如果你覺得你有些想法和我一樣,想和我一起提升自己可以關(guān)注私信我,與我一起進(jìn)步,一起共同努力?。。。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-402522.html

到了這里,關(guān)于【C語言】指針的基本知識(shí)詳細(xì)講解(指針數(shù)組、數(shù)組指針、函數(shù)指針....的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言初階】帶你輕松掌握指針基礎(chǔ)知識(shí)完結(jié)篇——野指針,指針運(yùn)算,指針和數(shù)組,二級(jí)指針

    【C語言初階】帶你輕松掌握指針基礎(chǔ)知識(shí)完結(jié)篇——野指針,指針運(yùn)算,指針和數(shù)組,二級(jí)指針

    君兮_的個(gè)人主頁 勤時(shí)當(dāng)勉勵(lì) 歲月不待人 C/C++ 游戲開發(fā) Hello,這里是君兮_,今天繼續(xù)給大家更新0基礎(chǔ)入門C語言的內(nèi)容,我們這次主要更新的依然是初階指針的基礎(chǔ)知識(shí) 廢話不多說咱們直接開始吧??! 概念: 野指針就是指針指向的位置是不可知的(隨機(jī)的、不正確的、沒有

    2024年02月16日
    瀏覽(22)
  • C語言之指針篇【超詳細(xì)講解,帶你層層深入理解指針】

    C語言之指針篇【超詳細(xì)講解,帶你層層深入理解指針】

    目錄 一、關(guān)于指針 二、指針類型 1、整型指針的訪問權(quán)限說明: 2、字符指針的訪問權(quán)限說明: 3、指針的類型決定向前或向后一步走了多大距離 三、野指針相關(guān)知識(shí) 1、野指針的成因 ①指針未初始化 ②指針的越界訪問 ③指針?biāo)赶虻目臻g釋放了 2、如何規(guī)避野指針 ①指針

    2024年02月02日
    瀏覽(33)
  • C語言/c++指針詳細(xì)講解【超詳細(xì)】【由淺入深】

    C語言/c++指針詳細(xì)講解【超詳細(xì)】【由淺入深】

    指針,是內(nèi)存單元的編號(hào)。 內(nèi)存條分好多好多小單元,一個(gè)小單元有 8 位,可以存放 8 個(gè) 0 或 1;也就是說,內(nèi)存的編號(hào)不是以位算的,而是以字節(jié)算的,不是一個(gè) 0 或 1 是一個(gè)編號(hào),而是 8 個(gè) 0 或 1 合在一起是一個(gè)編號(hào)。這個(gè)編號(hào),就是地址。 內(nèi)存條就分為好多小格子,一

    2024年01月21日
    瀏覽(18)
  • 初始C語言(7)——詳細(xì)講解有關(guān)初階指針的內(nèi)容

    初始C語言(7)——詳細(xì)講解有關(guān)初階指針的內(nèi)容

    ?第一章?“C“滸傳——初識(shí)C語言(1)(更適合初學(xué)者體質(zhì)哦?。??第二章?初始C語言(2)——詳細(xì)認(rèn)識(shí)分支語句和循環(huán)語句以及他們的易錯(cuò)點(diǎn)? ?第三章?初階C語言(3)——特別詳細(xì)地介紹函數(shù)? ?第四章?初始C語言(4)——詳細(xì)地講解數(shù)組的內(nèi)容以及易錯(cuò)點(diǎn)? ?第五章

    2024年02月11日
    瀏覽(19)
  • 【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程10(kafka集群原理+基本使用+zookeeper和kafka堆內(nèi)存調(diào)優(yōu)+kafka監(jiān)控和壓力測(cè)試+filebeat和logstash對(duì)接kafka)

    【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程10(kafka集群原理+基本使用+zookeeper和kafka堆內(nèi)存調(diào)優(yōu)+kafka監(jiān)控和壓力測(cè)試+filebeat和logstash對(duì)接kafka)

    本篇文章繼續(xù)給大家介紹ELFK日志分析,我們先前介紹了ELFK架構(gòu),zookeeper部署使用,kafka的部署,僅差kafka使用就將整個(gè)體系融匯貫通了。我們本篇文章將以kafka為核心,詳細(xì)介紹kafka使用,最終將kafka融入ELFK架構(gòu)中,大致內(nèi)容見下面目錄。 目錄 kafka集群原理 一、專業(yè)術(shù)語 二、

    2024年02月04日
    瀏覽(17)
  • Web數(shù)據(jù)庫基本知識(shí),SQL基本語法

    當(dāng)我們談?wù)撜麄€(gè)技術(shù)棧時(shí),實(shí)際上涉及了一系列步驟,而在Web開發(fā)中,這些步驟可以被具體化為以下幾個(gè)階段: DBMS-GUI-翻譯器-查詢語言 在web中具體如下: postgreSQL-Hasura-Apollo+ts-GraphQL 具體解釋 DBMS(數(shù)據(jù)庫管理系統(tǒng)): 作用: 數(shù)據(jù)庫管理系統(tǒng)允許我們直接使用SQL語言來操作數(shù)

    2024年02月03日
    瀏覽(63)
  • 光耦基本知識(shí)

    光耦基本知識(shí)

    ?1、光耦的種類? ? ? ? ? 高速光耦、低速光耦; ? ? ? ? ? ? ? ? 高速:6N137,HCPL-2601 ? ? ? ? ? ? ? ? 低速:PC817 ???????? 線性光耦、非線性光耦; ????????以6N136與6N137為例 ????????6N136是1Mbps的高速光耦,但是輸出端采用的是 晶體管 ,所以輸出電流的大小

    2024年02月02日
    瀏覽(47)
  • 前端基本知識(shí)介紹

    前端基本知識(shí)介紹

    目錄 一.前端三劍客 1.前導(dǎo) 2.三劍客的分工 二.VsCode的介紹與配置 1.vscode的介紹 2.vscode的下載安裝 3.vscode的使用 3.1 圖形界面操作 3.3 常用插件 三.HTML基礎(chǔ)標(biāo)簽 HTML基礎(chǔ)知識(shí) 1.HTML為何物? 2.標(biāo)簽介紹 3.HTML屬性 4.HTML標(biāo)簽骨架 基本的HTML標(biāo)簽 1.HTML標(biāo)題標(biāo)簽 2.換行與空格 3.HTML段落

    2024年02月03日
    瀏覽(52)
  • python基本知識(shí)學(xué)習(xí)

    python基本知識(shí)學(xué)習(xí)

    在控制臺(tái)輸出Hello,World! 單行注釋:以#開頭 多行注釋: 選中要注釋的代碼Ctrl+/ 三單引號(hào) 三雙引號(hào) 第一個(gè)字符必須是字母表中字母或下劃線 _ 。 標(biāo)識(shí)符的其他的部分由字母、數(shù)字和下劃線組成。 標(biāo)識(shí)符對(duì)大小寫敏感。 標(biāo)識(shí)符也叫變量名,變量名就是一個(gè)變量的名字,例如

    2024年02月15日
    瀏覽(22)
  • 無人機(jī)基本知識(shí)

    無人機(jī)基本知識(shí)

    目錄 前言 一、總體概況 二、機(jī)身 三、涵道 四、動(dòng)力系統(tǒng) 1、 螺旋槳 ?2、電機(jī) 3、電調(diào) 4、電池 五、遙控器 六、自動(dòng)駕駛儀(飛控) 1、組成 (1)傳感器 (2)接口 2、飛控的連接 3、控制邏輯 4、作用 5、產(chǎn)品 七、地面站 八、數(shù)傳 九、深度相機(jī) 總結(jié) 參考文獻(xiàn) 四旋翼飛機(jī)

    2024年01月19日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包