c语言笔记--------指针

=指针的概念=====
int a = 10;
int *p = &a;

int 指针类型 保存的数据对应类型的内存地址

  • 指针变量

p 名字

关于指针的两种说法
1.定义一个指针,让它指向a的地址
2.定义一个指针变量,用保存a的地址(推荐)

指针变量大小:
只跟操作系统的位数有关,跟保存的地址类型没有关系
32位系统指针变量占 4个字节
64位系统指针变量占 8个字节

指针的简单运算==========
1.解引用 * 地址–》值
要跟定义指针变量时*区分
除此之外,*和指针变量一起使用,*作用就是解引用

int a = 10;
int * p = &a;
*p = 20;
printf(“*p %d\n”,*p);//解引用
printf(“a %d\n”,a);

2.取地址 & (变量 --》地址)
通过变量获取变量所在内存的地址
int a = 10;
*(&a) a

scanf(“%d”,&a)

3.指针的加减运算

int a = 10;
int * p = &a;

char b = ‘Q’;
char * q = &b;

p 0x7fffc89c7834 q 0x7fffc89c7833
p+1 0x7fffc89c7838 q+1 0x7fffc89c7834

p+1 和p 差值 4

q+1 和q 差值 1

p++ p+1 有区别的: p++ p本身改变了

指针的加减运算跟数学上有区别的:
差值只跟类型有关系
int * 4
char * 1

补充:
通过指针的加减运算访问数组数据
int buf[5] ={12,1,3,55,47};
buf[0] 12
*(buf+0) 数组的名字也是数组首元素(buf[0])的地址 *(&buf[0]) &buf[0] 等价于 buf
*(buf+1) buf[1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值