在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C/ C語(yǔ)言指針
C語(yǔ)言printf()和scanf()函數(shù)
C語(yǔ)言strlen()函數(shù)
C語(yǔ)言指針
C語(yǔ)言ftell()函數(shù)
C語(yǔ)言#ifdef指令
C語(yǔ)言程序執(zhí)行流程
C語(yǔ)言歷史
C語(yǔ)言fprintf()和fscanf()函數(shù)
C語(yǔ)言#define指令
C語(yǔ)言#if指令
C語(yǔ)言將數(shù)組傳遞給函數(shù)
C語(yǔ)言指針的指針
C語(yǔ)言rewind()函數(shù)
C語(yǔ)言常量
C語(yǔ)言strcat()函數(shù)
C語(yǔ)言#ifndef指令
C語(yǔ)言continue語(yǔ)句
C語(yǔ)言注釋
C語(yǔ)言#include指令
C語(yǔ)言類(lèi)型轉(zhuǎn)換
C語(yǔ)言strcpy()函數(shù)
C語(yǔ)言strlwr()函數(shù)
C語(yǔ)言while循環(huán)
C語(yǔ)言字符串
C語(yǔ)言strrev()函數(shù)
C語(yǔ)言gets()和puts()函數(shù)
C語(yǔ)言文件處理
C語(yǔ)言存儲(chǔ)分類(lèi)
C語(yǔ)言運(yùn)算符
C語(yǔ)言數(shù)據(jù)類(lèi)型
C語(yǔ)言strcmp()函數(shù)
C語(yǔ)言VS開(kāi)發(fā)環(huán)境安裝
C語(yǔ)言轉(zhuǎn)義序列
C語(yǔ)言第一個(gè)程序
C語(yǔ)言變量
C語(yǔ)言goto語(yǔ)句
C語(yǔ)言預(yù)處理器指令
C語(yǔ)言指針?biāo)阈g(shù)運(yùn)算
C語(yǔ)言數(shù)學(xué)函數(shù)
C語(yǔ)言二維數(shù)組
C語(yǔ)言for循環(huán)
C語(yǔ)言命令行參數(shù)
C語(yǔ)言通過(guò)值和引用函數(shù)
C語(yǔ)言fputs()和fgets()函數(shù)
C語(yǔ)言do-while循環(huán)
C語(yǔ)言結(jié)構(gòu)體數(shù)組
C語(yǔ)言循環(huán)
C語(yǔ)言#pragma指令
C語(yǔ)言關(guān)鍵字
C語(yǔ)言#error指令
C語(yǔ)言聯(lián)合體
C語(yǔ)言特點(diǎn)
C語(yǔ)言break語(yǔ)句
C語(yǔ)言遞歸
C語(yǔ)言函數(shù)
C語(yǔ)言結(jié)構(gòu)體
C語(yǔ)言switch語(yǔ)句
C語(yǔ)言結(jié)構(gòu)體嵌套
C語(yǔ)言fputc()和fgetc()函數(shù)
C語(yǔ)言fseek()函數(shù)
C語(yǔ)言字符串函數(shù)
C語(yǔ)言if-else語(yǔ)句
C語(yǔ)言教程
C語(yǔ)言宏
C語(yǔ)言數(shù)組
C語(yǔ)言strupr()函數(shù)
C語(yǔ)言#undef指令

C語(yǔ)言指針

C語(yǔ)言中的指針是變量,也稱(chēng)為定位符或指示符,指向值的地址。

注意:指針是C語(yǔ)言的靈魂,如果指針不能熟練使用,那意味著你的C語(yǔ)言學(xué)得不咋地。

指針的優(yōu)點(diǎn)

  1. 指針減少代碼并提高性能,用于檢索字符串,樹(shù)等,并與數(shù)組,結(jié)構(gòu)和函數(shù)一起使用。
  2. 可以使用指針從函數(shù)返回多個(gè)值。
  3. 它使您能夠訪問(wèn)計(jì)算機(jī)內(nèi)存中的任何位置。

指針的使用

C語(yǔ)言中有很多指針的使用。

  • 動(dòng)態(tài)內(nèi)存分配
    在C語(yǔ)言中,可以指針使用malloc()calloc()函數(shù)動(dòng)態(tài)分配內(nèi)存。

  • 數(shù)組,函數(shù)和結(jié)構(gòu)
    C語(yǔ)言中的指針被廣泛應(yīng)用于數(shù)組,函數(shù)和結(jié)構(gòu)中。它減少代碼并提高性能。

指針中使用的符號(hào)

符號(hào) 名稱(chēng) 說(shuō)明
& 地址運(yùn)算符 確定變量的地址。
* 間接運(yùn)算符 訪問(wèn)地址上的值

地址運(yùn)算符

地址運(yùn)算符'&'返回變量的地址。 但是,我們需要使用%u來(lái)顯示變量的地址。創(chuàng)建一個(gè)源代碼文件:address-of-operator.c,其代碼實(shí)現(xiàn)如下 -

#include <stdio.h>      

void main() {
    int number = 50;
    printf("value of number is %d, address of number is %u", number, &number);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

value of number is 50, address of number is 15727016

指針示例

下面給出了使用打印地址和值的指針的例子。如下圖所示 -

如上圖所示,指針變量存儲(chǔ)數(shù)字變量的地址,即fff4。數(shù)字變量的值為50,但是指針變量p的地址是aaa3。

通過(guò)*(間接運(yùn)算符)符號(hào),可以打印指針變量p的值。

我們來(lái)看一下如上圖所示的指針示例。

創(chuàng)建一個(gè)源代碼文件:pointer-example.c,其代碼實(shí)現(xiàn)如下 -

#include <stdio.h>      

void main() {
    int number = 50;
    int *p;

    p = &number;//stores the address of number variable  

    printf("Address of number variable is %x \n", &number);
    printf("Address of p variable is %x \n", p);
    printf("Value of p variable is %d \n", *p);

}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Address of number variable is b3fa4c
Address of p variable is b3fa4c
Value of p variable is 50

NULL指針

未分配任何值的指針?lè)Q為NULL指針。 如果在聲明時(shí)沒(méi)有在指針中指定任何地址,則可以指定NULL值,這將是一個(gè)更好的方法。

int *p=NULL;

在大多數(shù)庫(kù)中,指針的值為0(零)。

指針的應(yīng)用示例:

指針程序來(lái)交換2個(gè)數(shù)字而不使用第3個(gè)變量

創(chuàng)建一個(gè)源代碼文件:swap2numbers.c,其代碼實(shí)現(xiàn)如下 -

#include<stdio.h>  

void main() {
    int a = 10, b = 20, *p1 = &a, *p2 = &b;

    printf("Before swap: *p1=%d *p2=%d\n", *p1, *p2);
    *p1 = *p1 + *p2;
    *p2 = *p1 - *p2;
    *p1 = *p1 - *p2;
    printf("\nAfter swap: *p1=%d *p2=%d\n", *p1, *p2);

}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Before swap: *p1=10 *p2=20

After swap: *p1=20 *p2=10