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

【C語(yǔ)言基礎(chǔ)教程】函數(shù)指針與指針大小

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


前言

在C語(yǔ)言中,指針是一項(xiàng)強(qiáng)大的工具,用于處理內(nèi)存中的數(shù)據(jù)。除了常見的指向變量和數(shù)組的指針,C語(yǔ)言還支持函數(shù)指針,它是一個(gè)指向函數(shù)的指針。本文將深入探討函數(shù)指針的概念以及指針的大小在C語(yǔ)言中的重要性。


一、函數(shù)指針

1.1 函數(shù)指針的概念

函數(shù)指針 是指向函數(shù)的指針變量。它允許我們?cè)谶\(yùn)行時(shí)動(dòng)態(tài)地選擇要調(diào)用的函數(shù)。函數(shù)指針通常用于實(shí)現(xiàn)回調(diào)函數(shù)、函數(shù)表、以及動(dòng)態(tài)調(diào)用不同的函數(shù)。要理解函數(shù)指針,我們首先需要理解C語(yǔ)言中函數(shù)的存儲(chǔ)和調(diào)用方式。

在C語(yǔ)言中,函數(shù)本身也存儲(chǔ)在內(nèi)存中,函數(shù)名實(shí)際上是指向函數(shù)代碼的指針。因此,函數(shù)指針就是一個(gè)指向函數(shù)的指針變量。函數(shù)指針的聲明形式如下:

return_type (*functionPointer)(parameter_list);

【C語(yǔ)言基礎(chǔ)教程】函數(shù)指針與指針大小,C語(yǔ)言系列課程,c語(yǔ)言,開發(fā)語(yǔ)言,1024程序員節(jié),c++,軟件工程,軟件構(gòu)建

其中,return_type 是函數(shù)的返回類型,functionPointer 是函數(shù)指針的名稱,parameter_list 是函數(shù)的參數(shù)列表。

通俗易懂的解釋
想象一下函數(shù)就像C語(yǔ)言的一塊特定任務(wù)的工具箱,而函數(shù)指針就是指向這個(gè)工具箱的地址的標(biāo)簽。這個(gè)標(biāo)簽可以被傳遞、存儲(chǔ)和使用,就像你可以把一把錘子的地址給別人,讓別人在需要時(shí)找到它并用它來工作。

函數(shù)指針的用途就如同在工具箱中找到特定的工具。你可以根據(jù)需要?jiǎng)討B(tài)地選擇要使用的工具,而不需要提前確定使用哪一個(gè)。這使得函數(shù)指針非常有用,尤其是在創(chuàng)建可擴(kuò)展和靈活的代碼時(shí)。

1.2 三個(gè)示例代碼

示例1: 使用函數(shù)指針調(diào)用不同的函數(shù)

#include <stdio.h>

void sayHello() {
    printf("Hello, ");
}

void sayWorld() {
    printf("World!\n");
}

int main() {
    void (*functionPointer)(); // 聲明一個(gè)函數(shù)指針

    functionPointer = sayHello; // 指向sayHello函數(shù)
    functionPointer(); // 調(diào)用sayHello函數(shù)

    functionPointer = sayWorld; // 指向sayWorld函數(shù)
    functionPointer(); // 調(diào)用sayWorld函數(shù)

    return 0;
}

【C語(yǔ)言基礎(chǔ)教程】函數(shù)指針與指針大小,C語(yǔ)言系列課程,c語(yǔ)言,開發(fā)語(yǔ)言,1024程序員節(jié),c++,軟件工程,軟件構(gòu)建

示例 2: 使用函數(shù)指針實(shí)現(xiàn)回調(diào)函數(shù)

#include <stdio.h>

// 回調(diào)函數(shù)類型
typedef void (*Callback)(int);

void performOperation(int value, Callback callback) {
    printf("Performing operation with value %d\n", value);
    callback(value); // 調(diào)用回調(diào)函數(shù)
}

void handleCallback(int value) {
    printf("Callback executed with value %d\n", value);
}

int main() {
    performOperation(42, handleCallback);

    return 0;
}

【C語(yǔ)言基礎(chǔ)教程】函數(shù)指針與指針大小,C語(yǔ)言系列課程,c語(yǔ)言,開發(fā)語(yǔ)言,1024程序員節(jié),c++,軟件工程,軟件構(gòu)建

示例 3: 使用函數(shù)指針數(shù)組

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int multiply(int a, int b) {
    return a * b;
}

int main() {
    int (*operation[])(int, int) = {add, subtract, multiply};

    int result = operation[0](5, 3); // 調(diào)用add函數(shù)
    printf("Result: %d\n", result);

    result = operation[1](8, 2); // 調(diào)用subtract函數(shù)
    printf("Result: %d\n", result);

    result = operation[2](4, 6); // 調(diào)用multiply函數(shù)
    printf("Result: %d\n", result);

    return 0;
}

【C語(yǔ)言基礎(chǔ)教程】函數(shù)指針與指針大小,C語(yǔ)言系列課程,c語(yǔ)言,開發(fā)語(yǔ)言,1024程序員節(jié),c++,軟件工程,軟件構(gòu)建

二、指針的大小

2.1 前述

大家經(jīng)常會(huì)聽到或者看到這樣一句話
指針在32位系統(tǒng)是4字節(jié),在64位系統(tǒng)是8字節(jié)
這句話不精確
這樣
1、32位的系統(tǒng)支持32位的軟件 64位系統(tǒng)支持32 64位的軟件
2、32位的程序/軟件是4字節(jié)指針,64位的程序是8字節(jié)指針。
所以,32位系統(tǒng)最大支持4字節(jié)指針,64位系統(tǒng)最大支持8字節(jié)指針
3、程序的位數(shù)由什么決定呢?
由我們的開發(fā)環(huán)境(編譯器)決定

2.2 指針大小如何決定?

sizeof(指針變量名字)

64bit程序
8字節(jié)

設(shè)置編譯器環(huán)境
32bit程序
4字節(jié)

兩方面理解

第一方面
記住就行了,很簡(jiǎn)單的幾個(gè)數(shù)
第二方面
32位的地址,最大就是4字節(jié)裝,就夠了,你給分個(gè)5字節(jié),沒用。用不上,有一個(gè)字節(jié)空間浪費(fèi),64位同理


總結(jié)

函數(shù)指針是C語(yǔ)言的一個(gè)強(qiáng)大概念,它允許動(dòng)態(tài)選擇和調(diào)用函數(shù)。通過將函數(shù)指針用于回調(diào)、函數(shù)表和動(dòng)態(tài)函數(shù)選擇等情況,你可以編寫更加靈活、可擴(kuò)展和模塊化的代碼。理解函數(shù)指針的概念和用法是C語(yǔ)言編程中的一個(gè)關(guān)鍵技能。同時(shí),理解指針的大小也非常重要,因?yàn)樗苯佑绊懙絻?nèi)存分配和訪問的正確性。掌握這些概念將使你成為更有經(jīng)驗(yàn)的C程序員。文章來源地址http://www.zghlxwxcb.cn/news/detail-745129.html

到了這里,關(guān)于【C語(yǔ)言基礎(chǔ)教程】函數(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語(yǔ)言基礎(chǔ)考研向】11 gets函數(shù)與puts函數(shù)及str系列字符串操作函數(shù)

    gets函數(shù)類似于scanf函數(shù),用于讀取標(biāo)準(zhǔn)輸入.前面我們已經(jīng)知道scanf函數(shù)在讀取字符串時(shí)遇到空格就認(rèn)為讀取結(jié)束,所以當(dāng)輸入的字符串存在空格時(shí),我們需要使用gets 函數(shù)進(jìn)行讀取. gets函數(shù)的格式如下: gets函數(shù)從STDIN (標(biāo)準(zhǔn)輸入)讀取字符并把它們加載到str(字符串)中,直到遇

    2024年01月22日
    瀏覽(28)
  • 【go語(yǔ)言基礎(chǔ)】指針數(shù)組和數(shù)組指針

    (1)指針數(shù)組: 存儲(chǔ)指針的數(shù)組,也叫存儲(chǔ)地址的數(shù)組,簡(jiǎn)單說就是存儲(chǔ)地址的。 首先它是一個(gè)數(shù)組,數(shù)組中的元素都是指針(地址)。 (2)數(shù)組指針: 首先它是一個(gè)指針,存儲(chǔ)的是指向數(shù)組的指針。 (1)指針數(shù)組 定義: 注意:首先是一個(gè)數(shù)組,將數(shù)組中的元素定義為

    2024年02月13日
    瀏覽(28)
  • C語(yǔ)言基礎(chǔ)——指針

    C語(yǔ)言基礎(chǔ)——指針

    指針就是地址。 地址:數(shù)據(jù)的位置。 指針是C語(yǔ)言提供的一種類型。 類型 * 類型:char int float double 指針 結(jié)構(gòu)體 數(shù)組 //char * – 代表這個(gè)地址里面存放的是char型數(shù)據(jù) — 該指針指向一個(gè)char型空間 //int * – 代表這個(gè)地址里面存放的是int型數(shù)據(jù) 問題: 通過強(qiáng)制類型轉(zhuǎn)換:(int

    2023年04月17日
    瀏覽(16)
  • C語(yǔ)言指針基礎(chǔ)

    C語(yǔ)言指針基礎(chǔ)

    目錄 前言 本期介紹內(nèi)容: 一、指針是什么? 二、指針和指針類型 指針類型的意義: 三、野指針 3.1什么是野指針? 3.2野指針的成因 1.指針未初始化 2.指針越界訪問 3.指針指向的那塊空間已經(jīng)釋放(還給操作系統(tǒng)了) 3.3如何規(guī)避野指針 四、指針運(yùn)算 4.1指針加減整數(shù) 4.2指針

    2024年02月12日
    瀏覽(24)
  • C語(yǔ)言基礎(chǔ)之——指針(上)

    C語(yǔ)言基礎(chǔ)之——指針(上)

    前言:小伙伴們又見面啦!本期內(nèi)容,博主將展開講解有關(guān)C語(yǔ)言中指針的上半部分基礎(chǔ)知識(shí),一起學(xué)習(xí)起來叭!?。?目錄 一.什么是指針 二.指針類型 1.指針的解引用 2.指針+-整數(shù) 三.野指針 1.野指針成因 (1)指針未初始化 ?(2)指針越界訪問 2.如何規(guī)避野指針 四.總結(jié) 指針

    2024年02月11日
    瀏覽(25)
  • C語(yǔ)言基礎(chǔ)之——指針(下)

    C語(yǔ)言基礎(chǔ)之——指針(下)

    前言:本篇文章將繼續(xù)講解有關(guān)指針的剩余基礎(chǔ)知識(shí)。 學(xué)無止境,一起加油叭?。?目錄 一.指針運(yùn)算 1.指針 +- 整數(shù) ?2.指針的關(guān)系運(yùn)算 ?3.指針 - 指針 二.指針與數(shù)組 三.二級(jí)指針 四.指針數(shù)組 總結(jié) 指針運(yùn)算包括以下三種: 指針 +- 整數(shù) 指針 - 指針 指針的關(guān)系運(yùn)算 我們嘗試用

    2024年02月11日
    瀏覽(26)
  • 【C語(yǔ)言基礎(chǔ)入門】二級(jí)指針、一維數(shù)組與指針、二維數(shù)組與指針

    【C語(yǔ)言基礎(chǔ)入門】二級(jí)指針、一維數(shù)組與指針、二維數(shù)組與指針

    在學(xué)習(xí)C語(yǔ)言的過程中,理解指針的概念是非常重要的。指針提供了一種直接訪問內(nèi)存地址的方式,使得我們可以更加靈活地管理數(shù)據(jù)和內(nèi)存。在本文中,我們將介紹C語(yǔ)言中的二級(jí)指針、一維數(shù)組與指針,并通過通俗易懂的語(yǔ)言和示例代碼來幫助讀者理解這些概念。 二級(jí)指針

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

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

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

    2024年03月10日
    瀏覽(26)
  • C語(yǔ)言-基礎(chǔ)語(yǔ)法學(xué)習(xí)-3 二級(jí)指針

    C語(yǔ)言-基礎(chǔ)語(yǔ)法學(xué)習(xí)-3 二級(jí)指針

    當(dāng)涉及到多級(jí)指針時(shí),C語(yǔ)言的靈活性和強(qiáng)大的指針功能可以得到充分的發(fā)揮。二級(jí)指針是指指向指針的指針,也被稱為指向指針的引用。 使用二級(jí)指針可以實(shí)現(xiàn)以下功能: 動(dòng)態(tài)內(nèi)存分配:通過二級(jí)指針可以動(dòng)態(tài)地分配內(nèi)存塊,并將其地址傳遞給其他函數(shù)或模塊進(jìn)行操作。這

    2024年02月12日
    瀏覽(25)
  • 逍遙自在學(xué)C語(yǔ)言 | 指針的基礎(chǔ)用法

    逍遙自在學(xué)C語(yǔ)言 | 指針的基礎(chǔ)用法

    在C語(yǔ)言中,指針是一項(xiàng)重要的概念,它允許我們直接訪問和操作內(nèi)存地址。 可以說,指針是C語(yǔ)言一大優(yōu)勢(shì)。用得好,你寫程序如同趙子龍百萬軍中取上將首級(jí);用得不好,則各種問題層出不窮,有種雙拳難敵四手的感覺。 本文將介紹指針的基礎(chǔ)知識(shí),包括指針的定義、初始

    2024年02月09日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包