指針:存放變量地址的變量
作用: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;
}