指针

*号的用法:
1、表达式中,*号两边有表达式,*号是四则运算的运算符
2、在声明语句中*号表明后面的变量为一个指针形式的变量*表示取址能力
3、*号如果不在声明语句中,而只是右边有表达式的话,表明取*号右边变量中所存地址对应内存中的数据(指针)
p=&i;
&*p      &*的优先级相同,按照从右到左的顺序结合 -》取*p的地址=>&i
*&i      取得该指针存储单元上的值=>*p
   p=p+1;p是指针,操作以后跳转一个单位(例如int型,跳转4个字节)

函数返回多个返回值:
1、在主调函数中设n个变量,n个指针指向他们
2、将指针变量作为实参传递到函数形参中
3、函数中通过形参指针变量改变n个值
4、主调函数使用改变后的值

int a[100];  int *p;  p=&arr;  现在p中存放的是数组首元素的地址,存放的值就是数组首元素的值   *p《==》*a
访问数组中元素三种方法:1下标2指针法*(p+i) 3数组名指针*(a+i)
二维数组 a[i][j]<==>*(*(a+i)+j)

动态内存分配:  常用函数:malloc()、calloc()、free() 函数声明在stdlib.h头文件中
malloc//         int *p=(int *)malloc(n*sizeof(int));p变量指向所申请的能够放下n个int型数据的内存块的起始地址 (对p进行+1就会指向下一个单元,一个int型数据长度的单元)
free(p)函数   释放内存  free有一个参数,这个参数是要释放内存区域的起始地址,释放指针变量p所指向的动态空间。
calloc//          int *p=(int *)calloc(n,sizeof(int));分配不成功会返回空指针null
malloc、calloc区别:malloc分配内存之后,区域内数值不初始化为0,可能保留之前的数据、calloc会将区域内的数值初始化为0


int *getAnArray();返回指针类型的返回值的函数
指针数组     int *p[n] ;  每个元素都是指向整形的指针
数组指针     int (*p)[n];  数组指针是指向一个数组的,也称为行指针
指向指针的指针 ( 双星p)int **p1;  int *p2;  p1=&p2;
结构体指针变量  声明形式  struct 结构体名 *结构体指针变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值