指针变量的理解! 课堂笔记

如何理解指针变量?
整型变量a======> 变量a里面存放的是整型数


指针变量a======> 变量a里面存放的是变量的地址值。


C++规定,所有变量必须先声明后使用
int a; //整型变量声明
int a[10]; //数组变量声明,在变量名的后面加了一个[]
int *a; //指针变量声明,在变量名的前面加了一个*,这里的*是一个指针类型说明符,int就是告诉我们清楚了这个指针指向了哪里(即这个指针指向的存储单元里面存放的是int数,不是char、double等数。


&& 逻辑与   1&&2的结果为1


&  按位与   1&2的结果为0
 




如何理解*和&运算符的关系?


*:作为双目运算符是乘法运算。
   作为单目运算符是取内容。


&:作为双目运算符是按位与; 
   作为单目运算符是取地址。


int a;  //a是一个简单变量,里面存放的内容是一个整型数
int *a; //a是一个复杂变量(指针变量),里面存放的内容是地址值




int a,b,*p;
p=&a;  //说明变量p里面存放的是变量a的地址
*p=100; //将100赋值给p所指向的存储单元,即a里面存放的值是100
*p=100;<=>a=100,因此*p=a(这里的=是等价的含义)




由p=&a;可以得知:*p=*&a;又因为有*p=a,所以*&a=a;
由*p=a;可以得知:&*p=&a;又因为有p=&a,所以&*p=p;
所以*&=&*=1
因此*和&互为倒数的关系,即互为逆运算的关系。






int a, b, *p;
p=&a;  
等价于   int a, b, *p=&a;




初学者易犯的一个错误就是写成:
int a, b, *p=100;
why?
因为C++规定,变量的地址值是一个八位的十六进制数(即以0x开头的数)。
但是int a, b,*p=0x100;是正确的。




*****指针变量(专门用来存放其他变量地址的变量)既然可以存放整型变量的地址,当然也可以存放数组变量的地址。
通过指针可以访问到整型数据,当然也可以通过指针访问到数组元素。






****通过指针变量访问一维整型数组a[8]元素的步骤:
首先要定义一个指针变量,例如:int *p;
然后让指针变量指向数组的第一个元素,即把数组元素的首地址赋值给p,数组元素的首地址有两种表示方法:1、a;2、&a[0]
也就是p=a;并将数组的第一个元素输出,cout<<*p<<",";
接着将指针p指向到数组的下一个元素并输出,通过p++实现移动指针,cout<<*p<<",";这样循环下去直到指针指向最后一个元素为止。


循环三要素:
1、从什么时候开始:从第一个元素开始
2、满足什么条件要循环:指针没有指向最后一个数组元素
3、每次循环要干什么:cout<<*p<<","; p++;


for(p=a;p<=a+7;p++)
{
  cout<<*p<<',';


}








*******如何理解指针数组&数组指针?
整型变量=======> int a;
指针变量=======> int *a;
整型数组=======> int a[8];
指针数组(它是一个数组变量)=======> int *a[8];
 它是一个数组变量,只不过每一个数组元素的值是指针,也就是地址值。


整型指针======> int *a;它是指向存放整型值的变量的地址。


数组指针(它是一个指针类型的变量,该变量存放的是一个一维数组 的地址)=======>
int (*a)[8];





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值