跟我一起学C语言(第七天)

本文通过实例代码详细讲解了C语言中指针与一维、二维数组的关系。强调了指针在操作二维数组时的注意事项,如行指针与列指针的转换,以及如何正确地通过指针访问数组元素。
摘要由CSDN通过智能技术生成

第七天

好多学生都认为C语言中指针是最难的,在我看来,并没有想象的那么难,希望读者不要害怕指针。

  

指针:

地址从内存分配
什么地址?一个地址就是一个编号,编号和编号之间相差一个字节,如果地址需要存储占用4个字节
什么指针? 指针常量和指针变量
指针常量就是地址编号
指针变量就是存放地址编号的变量
通常直接将指针常量和指针变量简称为指针。

如何定义指针变量。
xxx *p;  
xxx代表了一个数据类型


int a = 10;
int *p = &a; *和int结合构成了一个指针类型叫做int *
*p = 20;本质修改了a的内容
操作的是指针变量指向的空间内容(一个空间包含多个地址编号,其中第一个地址编号就可以被称为指向了这个空间,
指针变量存放空间首地址编号,所以也可以直接描述为指针变量指向了这个空间)。


算数运算符:+ - ++ --
int a = 10;
int *p = &a;


p + 1跳过的字节数和p指向的空间的类型相关
*p ++  打印结果为10  p指向偏移了
(*p)++ 单纯打印也是10  p指向没有改变


int *p;叫做野指针


int a = 0x12345678;
char *p = (char *)&a;


*(p + 1) 获取了 0x56 
*(p + 3) 获取了 0x12 


一级指针和一维数组的关系
数组名是一个常量地址 
int a[5] = {a[0],a[1],a[2],a[3],a[4]};
//int *p1 = &a[0];
//int *p2 = &a[1];


int *p = a;
p + i <==> a + i
*(p + i) <==>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值