【C語言學習】國嵌21__指針基礎

1、指針基礎函數

變量只是一段存儲空間的別名,那麼是否是必須經過這個別名纔可使用這段存儲空間?答案是否認的。咱們還能夠經過指針也就是地址的方式來訪問某段存儲空間。spa

#include <stdio.h>

int main()
{
    int i = 5;
    int* p = &i;
    
    printf("%d, %08X\n", i, p);
    
    *p = 10;
    
    printf("%d, %08X\n", i, p);

    return 0;
}

運行結果:指針

5, 0022FF48
10, 0022FF48code

二、指針的本質orm

# 指針在本質上也是一個變量內存

# 指針須要佔用必定的內存空間it

# 指針用於保存內存地址的值io

不一樣類型的指針佔用內存空間的大小相同。class

#include <stdio.h>

int main()
{
    int i;
    int* pI;
    char* pC;
    float* pF;
    
    pI = &i;
    *((int *)0x22ff4c) = 100; 
    
    printf("%0X, %0X, %d\n", pI, &i, i);
    printf("%d, %d, %0X\n", sizeof(int*), sizeof(pI), &pI);
    printf("%d, %d, %0X\n", sizeof(char*), sizeof(pC), &pC);
    printf("%d, %d, %0X\n", sizeof(float*), sizeof(pF), &pF);
    
    return 0;
}

運行結果:基礎

22FF4C, 22FF4C, 100
4, 4, 22FF48
4, 4, 22FF44
4, 4, 22FF40

程序實現的功能:一、指針佔用的內存空間二、指針的地址三、經過*號寫內存

*號的意義

# 在指針聲明時,*號表示所聲明的變量爲指針

# 在指針使用時,*號表示取指針所指向的內存空間中的值。*號相似一把鑰匙,經過這把鑰匙能夠打開內存,讀取內存中的值

# 「*」還表明乘號

三、傳值調用與傳址調用

# 指針是變量,所以能夠聲明指針參數

# 當一個函數內部須要改變實參的值,則須要使用指針參數

# 函數調用時實參值將複製到形參

# 指針適用於複雜數據類型做爲參數的函數中

利用指針實現變量交換函數:

#include <stdio.h>

#define SWAP(a, b) {int t = a; a = b; b = t;} //宏定義也能夠實現變量交換

void swap(int *a, int *b) //函數定義實現變量交換
{
int t = *a;
*a = *b;
*b = t;
}

int main()
{
int i = 1; 
int j = 9;

printf("%d, %d \n", i, j);

swap(&i, &j);

printf("%d, %d\n", i, j);

return 0;
}

四、常量與指針

# const int *p;       //p可變,p指向的內容不可變

# int const *p;       //p可變,p指向的內容不可變

# int *const p;     /p不可變,p指向的內容可變

# const int * const p;  //p和p指向的內容都不可變

記憶口訣:左數右指

當const出如今*號左邊時指針指向的數據爲常量,當const出如今*後右邊時指針自己爲常量

指針小結:

# 指針是C語言中一種特別的變量

# 指針所保存的值是內存的地址

# 能夠經過指針修改內存中的任意地址內容

相關文章
相關標籤/搜索