20150124 【 ARM 】 C语言+指针

13 篇文章 0 订阅
2 篇文章 0 订阅

【主要包括一大堆各种指针:

普通一维指针,数组指针,二维指针,函数指针,数组函数指针.....







指针:地址
数据类型 *指针变量名
int a=10;
int *p = &a;
说明:*表示是定义指针, &表示取a的地址


定义之后*p---》*表示取p所指向地址里面的内容(解引用)

指针运算(+,-)假设p = 0x100,
int array[10] ----40
int *p = array;
int *q = &array[3];

p+q = ?---没有意义
q-p = 12/sizeof(int) ---两个同类型的指针相减得到的是相差元素个数
p+1 = 0x104 ----指针加一个数是等于加这个数乘以指针所指向数据类型大小(1*sizeof(int))
p-1 = 0xfc(0x100-1*sizeof(int)) 

二级指针
数据类型 **指针变量名 ------指针的指针保存的是指针的地址

int a = 10;
int *p = &a;
(int *) *q = &p;

void mystr(char **buf)
{
//char **buf = &p
*buf = (char *)malloc(32)
strcpy(*buf, "hello world");
}
int main(void)
{
char *p = NULL;
mystr(&p);
printf("%s", p);
return 0;
}

数组与指针,函数关系
数组指针:本身是指针,指向的是一个数组
int (*p)[3]
指针数组:本身是数组,数组中存的是指针
int* p[3]
指针函数:本身是函数,返回值是一个指针
int *fun(void);
函数指针:本身是指针,指向的是一类函数
数据类型 (*变量名)(参数列表)
int (*fun)(int , int)












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值