C语言第六课(指针)

1.指针:一种数据类型,指针是存放数据的内存单元地址。

eg:    int A=23,

         地址p1=OXAO;

                &p1=OXBO;

                *p1=23;

2.*可以在类型名(int)后也可以在变量名前

3.声明一个指针后,要对指针进行初始化,一般为NULL

4.指针可以直接赋值成为某变量的地址,就是像该指针指向这个变量

5.*或者&,可以修改或访问指针的指向变量值

取地址运算符&:&是用来取操作对象的地址。例:&i 为取变量 i 的地址。对于常量表达式、寄存器变量不能取地址(因为它们存储在存储器中,没有地址)
指针运算符*(解引用运算符 ):与&为逆运算,作用是通过操作对象的地址,获取存储的内容。例:x = &i,x 为 i 的地址,*x 则为通过 i 的地址,获取 i 的内容

 6.指针运算:指针变量的自增自减运算。指针加 1 或减 1 运算,表示指针向前或向后移动一个单元

两个指针指向同一空间时,可以出现指针减指针(通过地址相减,本质还是两个指针相减)

相减就表示两个元素的距离eg:&arr[9]-&arr[0]=9

7.野指针:指向的内存地址是未知的(随机的,不正确的指向的内存地址是未知的(随机的,不正确的)不可对野指针进行赋值操作野指针成因:指针未初始
(指向的空间是随机的)或者指针越界访问(指针指向的范围超出了合理范围,或者调用函数时返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放)或者指针释放后未置空(指向无效内存)

所以要避免返回局部变量的地址,开辟的指针释放后置为NULL

 8.数组指针是一个指针变量,占有内存中一个指针的存储空间;数组指针即指向数组的指针,如:char (*array)[5];含义是一个指向存放5个字符的数组的指针

&arr和arr,虽然值一样,但是意义不一样

 &arr 表示的是数组的地址,不是数组首元素的地址

&arr 的类型是: int(*)[10] ,是一种数组指针类型。

数组的地址+1,跳过整个数组的大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值