指针资料整理 (二)

2014-11-23 22:13:32 ? 作者: ? 浏览: 9
*ip[10]; //指针数组
(7) int (*ip)[10]; //数组指针
指针数组:顾名思义,就是说的首先是一个数组吧,然后数组的元素是指针而已
数组指针:指向一个数组的指针
#include
using namespace std;

int main()
{
int a = 5, b = 1, c = 10;
int *p1 = &a, *p2 = &b, *p3 = &c;
int *p[3] = {p1, p2, p3}; //指针数组,数组中的每个元素都是一个指针
for(int i = 0; i < 3; i++)
cout << *p[i] << '\n';

int (*ap)[3]; //数组指针
int arr[4][3] = {{1,2},{2,3},{3}};
ap = arr;
for(int i = 0; i < 4; i++)
{
for(int j = 0; j < sizeof(ap[i])/sizeof(int); j++)
cout << ap[i][j] << " ";
cout << '\n';
}
}

(8) int *f(int a); //char* copy(char* s1, char* s2) 指针函数
指针函数是指函数返回值是一个指针类型
如我们在c语言中经常使用strcpy就是这样一个函数
char* strcpy(char* Dest, const char* Src)
{
assert(Dest != NULL &&Src !=NULL);
char* tmp = Dest;
while((*Dest++ = *Src++) != '\0');
return tmp;
}
看到这函数,我们可能会觉得为什么要有一个返回值呢?不是把Src的内容都已经复制到Dest中了么,这个主要是为了完成了链式运算,为了是strcpy函数能够作右值。

(9) int (*gp)(int); //函数指针
(10) int (*gp[10])(int); //函数指针的数组
#include
using namespace std;

void fun1(){ cout << "good" << '\n';}
void fun2(){ cout << "better" << '\n';}
void fun3(){ cout << "best" << '\n';}


int main()
{
void (*gp)() = fun1; //函数指针
gp();

void (*gpa[3])();//函数指针数组
gpa[0] = fun1;
gpa[1] = fun2;
gpa[2] = fun3;
for(int i = 0; i < 3; i++)
gpa[i]();
}

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: