如何理解指针变量?
整型变量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];
整型变量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];