-
指针是一种变量
-
指针这个变量有他自己的值;
-
指针这个变量有他自己的类型,它的类型代表的是它指向的数据的类型
-
声明一个指针时,仅仅只是为指针本身分配了空间(浅复制),声明全局变量用malloc
-
指针默认指向数组的第一个元素(a[0])
-
指针作为函数参数传递时,只传递了一个指针而不是一个数据的完整副本,大大节省内存空间
并且是按引用传递(例:用于交换数据的值) -
泛型指针没有具体的类型(void *x),可以指向任意类型
-
指针类型可以转换,fptr = (float *)iptr
-
函数指针:
A) char * (fun1)(char * p1,char * p2); A)这里fun1不是函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针
B) char * fun2(char * p1,char * p2); B) 与C)表达式相比,唯一不同的就是函数的返回值类型为char,是个二级指针。
C) char * fun3(char * p1,char * p2); C)fun3是函数名,p1,p2是参数,其类型为char *型,函数的返回值为char *类型。
委托来源于函数指针
代码示例:
int swap2(void *x,void *y,int size) {
void *tem;
if ((tem = malloc(size)) == NULL)
return -1;
memcpy(tem, x, size);
memcpy(x, y, size);
memcpy(y, tem, size);
free(tem);
return 0;
}
int main()
{
int a=111, b=222,*iptr,*iptr2;
iptr = &a;
iptr2 = &b;
cout << “a:” << *iptr << " b:" << *iptr2 << endl;
swap2(iptr, iptr2, 8);
cout << “a:” << *iptr << " b:" << *iptr2 << endl;
}