C語言指針筆記 by STP

指針:存放變量地址的變量


作用:1.可修改函數形參的值(交換兩個數的值);

            2.可以利用指針讓函數有N個返回值(例如用一個方法返回sum和minus等不同的計算結果);

            3.把指向函數的指針當作參數傳遞給函數。


格式:

int *i;
char *c;

注意:*只是一個說明符,說明該變量爲指針變量,不屬於變量名的一部分


錯誤寫法:

int *p;
p=100;//指針變量用來存放地址,不能賦值常量

int *p;
*p=200;//未指向確定地址前,不能對該指針變量賦值


1.指針和字符串:

char *p;//定義一個指針變量p
char c[] = "kristy";//定義一個字符數組
p=c;//指向首字母"k"

//省略定義字符數組,指針直接指向字符串
char *k = "kristy";
正確寫法:

char *p;
p="kristy";

錯誤寫法:

char k[6];
k="kristy";//k是一個數組地址常量,不能賦值

char *p = "kristy";
*p = "hello";

char c[]="kristy";//定義的是字符串變量!變量!變量!
char *p = "kristy";//定義的是字符串常量!常量!常量!

2.指針和函數:

指向函數的指針:

//定義一個sum函數,返回兩個數的和
int sum(int a,int b){
    return a+b;
}
//定義一個指向sum函數的指針p
int (*p)(int a,int b) = sum;

int main(){
    int result = (*p)(2,3);
   //int result = p(2,3);
    printf("結果爲:%d",result);
    return 0;
}
將指向函數的指針作爲參數傳遞:

#include <stdio.h>

// 減法運算
int minus(int a, int b) {
    return a - b;
}

// 加法運算
int sum(int a, int b) {
    return a + b;
}

// 這個counting函數是用來做a和b之間的計算,至於做加法還是減法運算,由函數的第1個參數決定
void counting( int (*p)(int, int) , int a, int b) {
    int result = p(a, b);
    printf("計算結果爲:%d\n", result);
}

int main()
{
    // 進行加法運算
    counting(sum, 8, 3);
    
    // 進行減法運算
    counting(minus, 8, 3);
    
    return 0;
}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章