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

深入理解指針(c語(yǔ)言)

這篇具有很好參考價(jià)值的文章主要介紹了深入理解指針(c語(yǔ)言)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、使用指針訪問數(shù)組

可以使用指針來(lái)訪問數(shù)組元素。例如,可以聲明一個(gè)指針變量并將其指向數(shù)組的第一個(gè)元素,然后通過(guò)遞增指針的方式來(lái)訪問數(shù)組的其他元素:

#include<stdio.h>
int main()
{
    int arr[5] = { 1, 2, 3, 4, 5 };
    int* ptr = arr; // 指針指向數(shù)組的第一個(gè)元素

    for (int i = 0; i < 5; i++)
    {
        printf("%d ", *ptr); // 訪問數(shù)組元素
        ptr++; // 指針遞增,指向下一個(gè)元素
    }
    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

二、數(shù)組名的理解

在C語(yǔ)言中,數(shù)組名有時(shí)代表數(shù)組中首元素的地址,有時(shí)代表整個(gè)數(shù)組,視情況而定。

1、數(shù)組首元素的地址

例1: 定義一個(gè)整型數(shù)組arr,可以用數(shù)組名arr表示數(shù)組的首地址,作為參數(shù)傳遞給函數(shù):

#include<stdio.h>

void printArray(int arr[], int size) 
{
    for (int i = 0; i < size; i++) 
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() 
{
    int arr[5] = {1, 2, 3, 4, 5};
    printArray(arr, 5);
    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

這里,printArray函數(shù)的參數(shù)形式為int arr[],實(shí)際上是將數(shù)組名arr作為指針常量傳遞給函數(shù)。


例2: 用數(shù)組名訪問數(shù)組中的元素:

#include<stdio.h>
int main()
{
	int arr[5] = { 1, 2, 3, 4, 5 };
	int* ptr = arr;
	printf("%d\n", *ptr);    // 輸出1
	ptr++;
	printf("%d\n", *ptr);    // 輸出2
	return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

這里,arr和ptr都指向數(shù)組的第一個(gè)元素,可以通過(guò)指針操作來(lái)訪問數(shù)組的元素。


2、整個(gè)數(shù)組

例1: sizeof中單獨(dú)放數(shù)組名,這?的數(shù)組名表?整個(gè)數(shù)組,計(jì)算的是整個(gè)數(shù)組的??(單位是字節(jié)):

#include<stdio.h>
int main()
{
	int arr[5] = { 1, 2, 3, 4, 5 };
	int size = sizeof(arr);
	printf("%d\n", size);
	return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言
    例2: &數(shù)組名,這?的數(shù)組名表?整個(gè)數(shù)組,取出的是整個(gè)數(shù)組的地址(整個(gè)數(shù)組的地址和數(shù)組?元素的地址是有區(qū)別的)
#include<stdio.h>
int main()
{
	int arr[5] = { 1,2,3,4,5 };
	printf("&arr[0]   = %p\n", &arr[0]);
	printf("&arr[0]+1 = %p\n", &arr[0] + 1);
	printf("arr       = %p\n", arr);
	printf("arr+1     = %p\n", arr + 1);
	printf("&arr      = %p\n", &arr);
	printf("&arr+1    = %p\n", &arr + 1);
	return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言
    這?我們發(fā)現(xiàn)&arr[0]和&arr[0]+1相差4個(gè)字節(jié),arr和arr+1相差4個(gè)字節(jié),是因?yàn)?amp;arr[0]和arr都是?元素的地址,+1就是跳過(guò)?個(gè)元素。
    但是&arr和&arr+1相差20個(gè)字節(jié),這就是因?yàn)?amp;arr是數(shù)組的地址,+1操作是跳過(guò)整個(gè)數(shù)組的。

除了這兩個(gè)例子之外,其他任何地?使?數(shù)組名都表??元素的地址。

三、一維數(shù)組傳參的本質(zhì)

在C語(yǔ)言中,一維數(shù)組傳參時(shí),實(shí)際上傳遞的是數(shù)組的首地址,也就是數(shù)組名。函數(shù)可以通過(guò)修改傳入的數(shù)組來(lái)修改實(shí)際的數(shù)據(jù)。

#include<stdio.h>

void modifyArray(int arr[], int size) 
{
    for (int i = 0; i < size; i++) 
    {
        arr[i] *= 2; // 修改數(shù)組元素
    }
}

int main() 
{
    int arr[5] = {1, 2, 3, 4, 5};
    modifyArray(arr, 5); // 傳遞數(shù)組名作為參數(shù)
    for (int i = 0; i < 5; i++) 
    {
        printf("%d ", arr[i]); // 輸出修改后的數(shù)組
    }
    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

四、冒泡排序

冒泡排序是一種基本的排序算法,通過(guò)多次比較和交換來(lái)實(shí)現(xiàn)。算法的核心思想是從數(shù)組的第一個(gè)元素開始,依次比較相鄰的兩個(gè)元素如果前一個(gè)元素大于后一個(gè)元素,則交換它們的位置

#include<stdio.h>

void bubbleSort(int arr[], int size) 
{
    for (int i = 0; i < size - 1; i++) 
    {
        for (int j = 0; j < size - i - 1; j++) 
        {
            if (arr[j] > arr[j + 1]) 
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() 
{
    int arr[5] = {5, 4, 3, 2, 1};
    bubbleSort(arr, 5);
    for (int i = 0; i < 5; i++) 
    {
        printf("%d ", arr[i]);
    }
    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

五、二級(jí)指針

二級(jí)指針是指向指針的指針。通過(guò)使用二級(jí)指針,可以在函數(shù)中修改指針的值,間接修改指針指向的變量。

#include<stdio.h>

void changeValue(int **ptr) 
{
    int newValue = 10;
    *ptr = &newValue; // 修改二級(jí)指針指向的變量
}

int main() 
{
    int value = 5;
    int *ptr = &value;
    changeValue(&ptr); // 傳遞二級(jí)指針作為參數(shù)
    printf("%d", *ptr); // 輸出修改后的值
    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

六、指針數(shù)組

指針數(shù)組是一個(gè)數(shù)組,其中的每個(gè)元素都是指針。通過(guò)指針數(shù)組,可以存儲(chǔ)多個(gè)指針,并進(jìn)行相應(yīng)的操作。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836938.html

#include<stdio.h>

int main() 
{
    int a = 1, b = 2, c = 3;
    int *ptrArray[3]; // 聲明指針數(shù)組

    ptrArray[0] = &a; // 將指針賦值給數(shù)組元素
    ptrArray[1] = &b;
    ptrArray[2] = &c;

    for (int i = 0; i < 3; i++) 
    {
        printf("%d ", *ptrArray[i]); // 輸出數(shù)組元素指向的值
    }

    return 0;
}
  • 輸出結(jié)果:
    深入理解指針(c語(yǔ)言),c語(yǔ)言,java,算法,后端,開發(fā)語(yǔ)言

到了這里,關(guān)于深入理解指針(c語(yǔ)言)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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語(yǔ)言深入理解指針(非常詳細(xì))(四)

    C語(yǔ)言深入理解指針(非常詳細(xì))(四)

    字符指針在之前我們有提到過(guò),(字符)(指針)前面的字符代表著存儲(chǔ)的元素為字符類型,而指針則是表示這存儲(chǔ)的方式。 寫法為char * 一般使用的方式如下: 還有一種使用方式如下: 值得注意的是: 代碼 const char pstr = “hello jack.”; 特別容易以為是把字符串 hello jack 放到

    2024年02月09日
    瀏覽(25)
  • 【C語(yǔ)言基礎(chǔ)】:深入理解指針(三)

    【C語(yǔ)言基礎(chǔ)】:深入理解指針(三)

    指針系列回顧 : 【C語(yǔ)言基礎(chǔ)】:深入理解指針(一) 【C語(yǔ)言基礎(chǔ)】:深入理解指針(二) 一、冒泡排序 冒泡排序的核心思想就是:兩兩相鄰的元素進(jìn)行比較。 可以看到,這段代碼對(duì)arr數(shù)組進(jìn)行了排序,但這個(gè)代碼還有一些缺陷,那就是無(wú)論數(shù)組內(nèi)部的元素是否有序,他都會(huì)循

    2024年03月10日
    瀏覽(25)
  • C語(yǔ)言深入理解指針(非常詳細(xì))(一)

    C語(yǔ)言深入理解指針(非常詳細(xì))(一)

    在將內(nèi)存和地址時(shí)我們先舉一個(gè)生活中的例子: 假設(shè)有?棟宿舍樓,把你放在樓里,樓上有100個(gè)房間,但是房間沒有編號(hào),你的?個(gè)朋友來(lái)找你玩, 如果想找到你,就得挨個(gè)房子去找,這樣效率很低,但是我們?nèi)绻鶕?jù)樓層和樓層的房間的情況,給每個(gè)房間編上號(hào),如: 有

    2024年02月10日
    瀏覽(21)
  • C語(yǔ)言深入理解指針(非常詳細(xì))(二)

    C語(yǔ)言深入理解指針(非常詳細(xì))(二)

    指針的基本運(yùn)算有三種,分別是: ? 指針±整數(shù) ? 指針-指針 ? 指針的關(guān)系運(yùn)算 因?yàn)閿?shù)組在內(nèi)存中是連續(xù)存放的,比如int類型的數(shù)組,每個(gè)元素相差4個(gè)字節(jié),因此我們只需要知道首元素的地址就可以通過(guò)加減的方式找到后面元素的地址 。 概念:野指針就是指針指向的位置

    2024年02月10日
    瀏覽(14)
  • C語(yǔ)言——從頭開始——深入理解指針(1)

    C語(yǔ)言——從頭開始——深入理解指針(1)

    ?一.內(nèi)存和地址 我們知道計(jì)算上CPU(中央處理器)在處理數(shù)據(jù)的時(shí)候,是通過(guò)地址總線把需要的數(shù)據(jù)從內(nèi)存中讀取的,后通過(guò)數(shù)據(jù)總線把處理后的數(shù)據(jù)放回內(nèi)存中。如下圖所示: 計(jì)算機(jī)把內(nèi)存劃分為?個(gè)個(gè)的 內(nèi)存單元 ,每個(gè)內(nèi)存單元的大小取1個(gè)字節(jié)( 1個(gè)字節(jié)(Byte)=8個(gè)比特

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

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

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

    2024年02月02日
    瀏覽(33)
  • 【C語(yǔ)言】指針的入門篇2,深入理解指針和數(shù)組的關(guān)系

    【C語(yǔ)言】指針的入門篇2,深入理解指針和數(shù)組的關(guān)系

    歡迎來(lái)CILMY23的博客喔,本期系列為【C語(yǔ)言】指針的入門篇2,深入理解指針和數(shù)組的關(guān)系,圖文講解指針和數(shù)組關(guān)系的知識(shí),帶大家理解指針和數(shù)組的關(guān)系,以及指針+數(shù)組的用法,感謝觀看,支持的可以給個(gè)贊哇。 前言 在上一篇博客中,我們了解了指針就是地址,并且把地

    2024年02月20日
    瀏覽(30)
  • C語(yǔ)言指針(適合C語(yǔ)言進(jìn)階者):一道題帶你深入理解數(shù)組與指針的關(guān)系

    ??個(gè)人主頁(yè):JAMES別扣了 ??在校大學(xué)生一枚。對(duì)IT有著極其濃厚的興趣 ?系列專欄目前為C語(yǔ)言初階、后續(xù)會(huì)更新c語(yǔ)言的學(xué)習(xí)方法以及c題目分享. ??希望我的文章對(duì)大家有著不一樣的幫助,歡迎大家關(guān)注我,我也會(huì)回關(guān),大家一起交流一起互動(dòng),感謝大家的多多支持哈! ??

    2024年04月16日
    瀏覽(19)
  • 《深入理解Java虛擬機(jī)》讀書筆記:垃圾收集算法

    《深入理解Java虛擬機(jī)》讀書筆記:垃圾收集算法

    由于垃圾收集算法的實(shí)現(xiàn)涉及大量的程序細(xì)節(jié),而且各個(gè)平臺(tái)的虛擬機(jī)操作內(nèi)存的方法又各不相同,因此本節(jié)不打算過(guò)多地討論算法的實(shí)現(xiàn),只是介紹幾種算法的思想及其發(fā)展過(guò)程。 垃圾收集算法概要 ? 標(biāo)記-清除算法最基礎(chǔ)的收集算法是“標(biāo)記-清除”(Mark-Sweep)算法,算

    2024年02月13日
    瀏覽(19)
  • Java 算法篇-深入理解遞歸(遞歸實(shí)現(xiàn):青蛙爬樓梯)

    Java 算法篇-深入理解遞歸(遞歸實(shí)現(xiàn):青蛙爬樓梯)

    ??博客主頁(yè):? 小扳_-CSDN博客 ?感謝大家點(diǎn)贊??收藏?評(píng)論? ? ? 文章目錄 ? ? ? ? 1.0 遞歸的說(shuō)明 ? ? ? ? 2.0 用遞歸來(lái)實(shí)現(xiàn)相關(guān)問題 ? ? ? ? 2.1 遞歸 - 階乘 ? ? ? ? 2.2 遞歸 - 反向打印字符串 ? ? ? ? 2.3 遞歸 - 二分查找 ? ? ? ? 2.4 遞歸 - 冒泡排序 ? ? ? ? 2.5 遞歸

    2024年02月05日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包