指针详解及代码示例

  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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值