小豬的C語言快速入門系列(七)

coder-pig發表於2017-10-17

小豬的C語言快速入門系列(七)

標籤: C語言


本節引言

在第五節的時候我們對C裡的指標進行了初步的學習,而作為C語言的靈魂,
當然不會就那麼簡單,本節我們來進一步學習指標,包括:函式與指標
指標陣列二級指標記憶體的動態 以及 const修飾指標


本節學習路線圖


1.函式與指標


1)指標作為函式的形參

2)指向函式的指標

3)指標函式

4)帶引數的主函式

該程式需要用到命令列引數,需要先編譯生成exe,然後cmd命令列來到生成的exe檔案
所在目錄下輸入:檔名 one two three,結果會輸出one two three。


2.指標陣列

問題引入:如何儲存一個字串更好?如果儲存的不止一個,而是多個字串呢?

問題一回答

char name[20] = “~” ②char *name = “~” //前者定義了長度,不能直接賦值,明顯後者比較靈活

問題二回答


3.二級指標


4.記憶體的動態分配

程式碼示例

動態分配10個int型別的空間大小,如果大於這個數目則動態分配,否則利用realloc
重新分配記憶體。

#include <stdio.h>  
#include <stdlib.h>  
#define N 10  

int main()  
{  
    int *p = 0;  
    int  i,num,*q = 0;  
    p = (int *)malloc((N * sizeof(int)));  
    if(p == 0)  
    {  
        printf("記憶體分配錯誤!\n");  
        exit(0);  
    }  
    printf("請輸入要儲存的元素個數:\n");  
    scanf("%d",&num);  
    if(num <= N)  
    {  
        for(i = 0;i < N;i++)  
        scanf("%d",p+i);  
    }  
    else  
    {  
        for(i = 0;i < num;i++)  
        q = (int *)realloc(p,(N + N)*sizeof(int));  
        if(q == 0)exit(0);  
        for(i = 0;i < num;i++)  
        scanf("%d",q + i);  
        p = q;  
    }  
    for(i = 0;i < num;i++)  
    printf("%3d",*(p+i));  

    printf("\n");  
    free(p);  
    return 0;     
}

5.使用const修飾指標變數

const 關鍵字修飾的資料型別是指 常型別,最簡單的用法是用來定義const
常量,具有不變性,比如int const a = 10; 要注意一點:
const修飾的常量在宣告的時候就要進行初始化賦值,不然後面是不能賦值的!

另外在與指標結合使用的時候,const 顛倒寫 表示的意思是不一樣的!

  • int const *a; //修飾指向的內容,a可變,a指向的內容不可變
  • int *const a; //修飾指標a,a不可變,a指向的內容可變
  • const int *a; //修飾指向的內容,a可變,a指向的內容不可變
  • const int *const A; //指標a和a指向的內容都不可變

 
上述結論可以自行修改下述例子裡指標與指向的內容自行測試:

#include<stdio.h>
int main()
{
    int const a;
    a = 5;
    printf("a = %d\n",a);
    return 0;
}

本文連結小豬的C語言快速入門系列(七)
作者:Coder-Pig
出處http://blog.csdn.net/coder_pig
本文基於知識共享署名-相同方式共享 4.0 國際許可協議釋出,歡迎轉載,
演繹或用於商業目的,但是必須保留本文的署名及連結。åç


相關文章