对指针作用的理解

定义变量

int a;   //定义一个整型变量a
int *p;  //定义了一个整型指针变量p
  1. 指针有什么用?
    存储一个地址。
p = &a;  //整型指针p获取了整型变量a的地址
  1. 指针p指向了整型变量a。
    作用:
    可以用指针p来操作变量a了。

例如:

{
	int a = 10;
	int *p;
	p = &a;
	printf("%d"*p); //输出指针p所指向的内存中的值,这里的*是#间接访问运算符#
}
>>> 10

动态存储方法

malloc(4);
malloc(sizeof(int));
int *p;
p = (int *)malloc(sizeof(int));  //malloc函数返回类型是void *,所以要强制转换  
*p = 10;                         //向指针p所指向的内存空间中存入10
printf("%d", *p);                //输出指针p所指向的内存中的值
>>> 10
  1. 指针就是用来存储内存地址的,为什么要分不同类型的指针呢?
    因为指针变量存储的是一个内存空间的首地址(第一个字节的地址),但是这个空间占用了多少个字节,用来存储什么类型的数,则是由指针的类型来标明的。这样系统才知道应该取多少个连续内存作为一个数据。

  2. why malloc?
    之前的方法,必须预先准确知道所需变量的个数,也就是说我们必须定义出所有的变量。比如我们定义了100个整型变量,那么程序只能存储100个整数。而malloc函数使我们可以在程序运行的过程中根据实际情况来申请空间。

*与&

  1. C中的用法
    (a) 指针的声明:int p 或 int p; 读法:p是指向一个整数类型的指针。
    (b) 复合指针: int p; 或 int p; 读法 p是一个指向一个指向整数类型的指针的指针。(同样道理, int
    **p等等)
    (c) 解引用: x=*p 把指针p指向的值赋值给x

  2. &在C语言中的用法
    (a) 位运算与:x=a&b;
    (b) 逻辑与赋值:x&=y;与 x=x&y含义相同
    (c) 求地址运算符:p=&x;读法:把x的地址赋给p(指针)

  3. C++中&的补充用法
    C++中有一种C不存在的变量类型引用变量(简单说来为引用),尽管在C语言中用指针也可以实现类似的功能。
    引用,指针,地址是联系密切的概念。地址是在电脑内存中的地址(一般是一些变量的值在内存中的储存位置),指针是存地址的变量,所以指针可以“指向”内存地址。概念上讲,引用变量本质上是指针的另一个名字(但是并不能被编译器实例化)

二级指针

想要在函数里修改一级指针的指向,就要用2级指针接收,间接修改一级指针内容

只读操作,不修改一级指针的内容,就用1级指针就可以。

如果函数是一级指针的话,是值传递,并不能改变形参的值。

若有错误请帮忙指正呀,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值