#include <iostream>
#include <stdio.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//函数指针VS指针函数
//函数指针:指向函数的指针;函数指针不允许加加减减。
//指针函数:返回指针的函数
int fun(int a , int b){
return a+b;
}
int (*pfun)(int, int); //定义指向fun函数的指针
int* fun1(int a,int b){
static int x = a+b;
return &x;
}
int main(){
pfun = fun;
//pfun++;//错
return 0;
}
/*
//3 数组指针VS指针数组
// *与[]的结合力:[]比*强。int *br[]表示int * br[],br[]先结合,表示数组,然后这个数组中存储指针
// (*p)指针, (*p)[3]指针指向元素个数为3的数组。
//
//
int main(){
int ar[3] = {1,2,3};
int (*p)[3] = &ar;//数组指针
int a = 1,b = 2, c = 3;
int *br[3] = {&a, &b, &c};//指针数组,存储整型地址的数组
return 0;
}
//2 二维数组指针定义
int main(){
int br[2][3] = {0};
int (*p)[3] = br;//br表示保存首元素的地址,首元素是个数组,那么指向br就必须定义一个指向数组的指针变量。
return 0;
}
/*
//1 数组指针:指向数组的指针
int main(int argc, char *argv[]) {
int ar[10] = {1,2,3,4,5,6,7,8,9,10};
//三只合一
cout<<ar<<endl;//访问数组名的内容 ,刚好保存的是首元素的地址
cout<<&ar[0]<<endl;//对其首元素进行取地址
cout<<&ar<<endl;//取整个数组的地址
int a = 10;
int *p = ar;//ar保存首元素的地址,而首元素是整型,那么这个整型指针变量可以接收。
int *p1 = &ar[0]; //整形指针
//int *p2 = &ar;//ar是对整个数组取地址,&ar是数组的地址 ,必须定义数组指针,而*p是整型指针。
int (*p2)[10] = &ar;//&ar是取整个数组的地址;数组指针,定义一个指向数组的指针。大小要相同,类型同
return 0;
}*/
#include <stdio.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//函数指针VS指针函数
//函数指针:指向函数的指针;函数指针不允许加加减减。
//指针函数:返回指针的函数
int fun(int a , int b){
return a+b;
}
int (*pfun)(int, int); //定义指向fun函数的指针
int* fun1(int a,int b){
static int x = a+b;
return &x;
}
int main(){
pfun = fun;
//pfun++;//错
return 0;
}
/*
//3 数组指针VS指针数组
// *与[]的结合力:[]比*强。int *br[]表示int * br[],br[]先结合,表示数组,然后这个数组中存储指针
// (*p)指针, (*p)[3]指针指向元素个数为3的数组。
//
//
int main(){
int ar[3] = {1,2,3};
int (*p)[3] = &ar;//数组指针
int a = 1,b = 2, c = 3;
int *br[3] = {&a, &b, &c};//指针数组,存储整型地址的数组
return 0;
}
//2 二维数组指针定义
int main(){
int br[2][3] = {0};
int (*p)[3] = br;//br表示保存首元素的地址,首元素是个数组,那么指向br就必须定义一个指向数组的指针变量。
return 0;
}
/*
//1 数组指针:指向数组的指针
int main(int argc, char *argv[]) {
int ar[10] = {1,2,3,4,5,6,7,8,9,10};
//三只合一
cout<<ar<<endl;//访问数组名的内容 ,刚好保存的是首元素的地址
cout<<&ar[0]<<endl;//对其首元素进行取地址
cout<<&ar<<endl;//取整个数组的地址
int a = 10;
int *p = ar;//ar保存首元素的地址,而首元素是整型,那么这个整型指针变量可以接收。
int *p1 = &ar[0]; //整形指针
//int *p2 = &ar;//ar是对整个数组取地址,&ar是数组的地址 ,必须定义数组指针,而*p是整型指针。
int (*p2)[10] = &ar;//&ar是取整个数组的地址;数组指针,定义一个指向数组的指针。大小要相同,类型同
return 0;
}*/