数组-指针-引用

一、指针的概念

指针是内存中的地址。

1、语法:类型 * 变量名
这里的类型是定义了这个指针指向的变量类型。

2、指针的运算符(*和&)
&取地址符
例如:
int counta=100;
int * mm;
mm=&counta;
假设counta所在地址是2000,这是候m=2000。
#include <iostream.h><br> void main()<br> {<br> int counta=100;<br> int * mm;<br> mm=&amp;counta;<br> cout }<br>*返回这个地址的值,与&amp;正好相反。<br> #include <iostream.h><br> void main()<br> {<br> int p,counta=100;<br> int * mm;<br> mm=&amp;counta;<br> p=* mm;<br> cout }<br> 3、指针的赋值<br><br> #include <iostream.h><br> void main()<br> {<br> int x;<br> int * p1,* p2;<br> p1=&amp;x;<br> p2=p1;<br> cout }<br><br> 结果:0x0012FF7C<br> 4、指针的运算<br> 指针的++与--是将指针的地址移动所属变量类型位数。<br><br> char 8<br> int 16<br> long 32<br> float 32<br> double 64<br> 5、指针与数组<br><br> 数组声明:类型 变量名[长度]<br><br> 没有下标的“一维”数组名就是一个指向该数组第一个元素的指针。<br><br> #include <iostream.h><br> void main()<br> {<br> int x[3]={1,2,3};<br> int * p1;<br> p1=x;<br> cout }<br> a、等价关系:<br><br> 如:char c[10];<br> c 和 &amp;c[0] 是等价的。<br><br> 再如:char c[2][3];<br> c 和 &amp;c[0][0] 是等价的。<br> *(c+12) 和 &amp;c[1][2] 是等价的。<br><br> b、数组与指针的关系<br><br> 1&gt;一维数组的指针<br><br> #include <iostream.h><br> void main()<br> {<br> int x[2]={1,2};<br> int * p1;<br> p1=x;<br> cout cout }<br><br> 2&gt;二维数组的指针<br><br> #include <iostream.h><br> void main()<br> {<br> int<br> x[2][3]={1,2,3,4,5,6};<br> //int x[2]={1,2};<br> int * p1;<br> p1=&amp;x[0][0]; //二维数组给指针不能用"p1=x"这个来赋值,只能是“p1=x[2]”<br> cout cout cout cout cout cout cout cout cout cout cout cout //规律:* (p1+((1*3)+2))<br> }<br><br> 思考:指针是地址,那么如果想得到某地址的变量用什么方法。<br><br> 二、将引用和指针相比较<br><br> 引用是变量的别名。<br><br> #include <iostream.h><br> void main()<br> {<br> int * p1,a=100;<br> int &amp; y1=a; //必须直接赋值<br> p1=&amp;a;<br> y1=a;<br> cout cout }<br><br> 指针和引用可以达到同样的效果。<br><br> #include <iostream.h><br> void main()<br> {<br> void funca(int &amp; vala);<br> void funcp(int * valp);<br> int a=100,b=100;<br> int &amp; y1=a; //必须直接赋值,而且只能赋值一次<br> funca(a);<br> funcp(&amp;b);<br> cout cout }<br> void funca(int &amp; vala)<br> {<br> vala=200;<br> }<br> void funcp(int * valp)<br> {<br> * valp=500;<br> }<br><br> 三、*和&amp;的用途,避免这些符号在使用上发生混淆<br><br> 1、*的作用:<br><br> 1&gt;乘号<br> 2&gt;指针定义符号<br> 3&gt;返回某个地址的值<br><br> 2、&amp;的作用:<br><br> 1&gt;位运算中的“与”<br> 2&gt;取地址符<br> 3&gt;引用<br></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h>

你可能感兴趣的:(C++,c,C#)