目录
一.什么是指针以及如何获取地址
二.间接运算符(解引用运算符):*
三.声明指针
四.使用指针在函数进行通信
五.变量:名称,地址和值
一.什么是指针以及如何获取地址
指针是一个值为内存地址的变量(或数据对象),正如char类型变量的值是字符,int类型变量的值是整数
那我们要如何获得一个变量的值。用&符号就可以,我们来看下例子
这里我们用%p打印num的地址(&num),地址用的是十六进制表示。
那值有了,我们该用指针变量存储这个地址了
这里我们声明了一个指向int 类型的指针p,用语句int * p表示。
这里的* 不是表示指针的意思。而是间接运算符。它表示*p的值就是一个int类型的值。至于为何叫间接运算符。我们后面会讲
然后我用int * p = #把num的地址赋给p。这里要明白一个点。ptr是变量,它是可以更换存储的地址的。但&pooh是个常量,它就是一个值地址。是无法改变的
然后我们看红色下划线,可以发现a的地址和p存储的地址是不一样的。而看到黄色部分,这里值的是p本身的地址,它的值和存储地址是不一样的。两个在概念上面完全不同,大家不要弄混淆了
二.间接运算符(解引用运算符):*
int num = 1;
int * p = #
int p_num=*p;
间接运算符*找出存储在pooh存储地址的值
所以这就相当于
p_num = num;
我们看红色括号也可以发现两者值相同,但地址是不同的。
看到这朋友你是否理解了为啥叫*为间接运算符的原因了。
在我们理解*为获得地址值后,我们在来看int * p = #首先我们已经知道了p = &num。p存储的就是num的地址。那么*p就是获得num地址上面的值。所以声名时我们用int * p;说明p解引用后指向的是一个int类型的值。如果解引用后是一个float的类型值,就用float * p;
间接运算符*优先级高于+
三.声明指针
声明指针变量时必须指定指针所指向变量的类型
指向float类型的指针就是 float * p(p是我们自定义的变量名)
格式:类型名 + * + 指针名
四.使用指针在函数进行通信
本例子,我们通过指针将两个变量存储值进行交换,我们在主函数当中传入实参x,y的地址。然后函数interchange接受这两个实参值(两个地址),然后将两个地址上面的值进行改动。
五.变量:名称,地址和值
编写程序时,可以认为变量有两个属性:名称和值。计算机编译和加载程序后,认为
变量也有两个属性:地址和值(地址就是变量在计算机内部的名称)。普通变量把值作为基本量,把地址作为通过&运算符获得的派生量,
而指针变量把地址作为基本量,把值作为通过*运算符获得的派生量
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈