指针详解及代码示例

版权声明:本文章已申请版权保护,转载请注明出处! https://blog.csdn.net/qq_39628933/article/details/84958661
  1. 指针是一种变量

  2. 指针这个变量有他自己的值;

  3. 指针这个变量有他自己的类型,它的类型代表的是它指向的数据的类型

  4. 声明一个指针时,仅仅只是为指针本身分配了空间(浅复制),声明全局变量用malloc

  5. 指针默认指向数组的第一个元素(a[0])

  6. 指针作为函数参数传递时,只传递了一个指针而不是一个数据的完整副本,大大节省内存空间
    并且是按引用传递(例:用于交换数据的值)

  7. 泛型指针没有具体的类型(void *x),可以指向任意类型

  8. 指针类型可以转换,fptr = (float *)iptr

  9. 函数指针:
    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;
}

猜你喜欢

转载自blog.csdn.net/qq_39628933/article/details/84958661