一、指针的概念
指针是内存中的地址。
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=&counta;<br>
cout
}<br>*返回这个地址的值,与&正好相反。<br>
#include <iostream.h><br>
void main()<br>
{<br>
int p,counta=100;<br>
int * mm;<br>
mm=&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=&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 和 &c[0] 是等价的。<br><br>
再如:char c[2][3];<br>
c 和 &c[0][0] 是等价的。<br>
*(c+12) 和 &c[1][2] 是等价的。<br><br>
b、数组与指针的关系<br><br>
1>一维数组的指针<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>二维数组的指针<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=&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 & y1=a; //必须直接赋值<br>
p1=&a;<br>
y1=a;<br>
cout
cout
}<br><br>
指针和引用可以达到同样的效果。<br><br>
#include <iostream.h><br>
void main()<br>
{<br>
void funca(int & vala);<br>
void funcp(int * valp);<br>
int a=100,b=100;<br>
int & y1=a; //必须直接赋值,而且只能赋值一次<br>
funca(a);<br>
funcp(&b);<br>
cout
cout
}<br>
void funca(int & vala)<br>
{<br>
vala=200;<br>
}<br>
void funcp(int * valp)<br>
{<br>
* valp=500;<br>
}<br><br>
三、*和&的用途,避免这些符号在使用上发生混淆<br><br>
1、*的作用:<br><br>
1>乘号<br>
2>指针定义符号<br>
3>返回某个地址的值<br><br>
2、&的作用:<br><br>
1>位运算中的“与”<br>
2>取地址符<br>
3>引用<br></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h></iostream.h>
分享到:
相关推荐
#include using namespace std; //自定义结构体类型 struct date { int month; //结构体变量名定义 int day; int year; }; struct teacher { int num; char name[20]; struct date birthday;......
第9章 指针和数组——指针和一维数组之间的关系C语言程序设计第9章 指针和数组一维数组元素的引用数组名代表数组的首地址&a[0]a+1不是加上1个字节,取决于a
第四章 数组、指针与引用(计算机等级考试二级C++) 第四章 数组、指针与引用(计算机等级考试二级C++)
1 数组及其简单应用 2 指针及其简单应用 3 指针与数组 4 字符串 5 指针数组与命令行参数 6 引用
通过指针引用数组元素如果指针变量p指向数组中的一个元素,则p+1指向同一数组中的下一个元素。 2 指针与数组 如果p的初始值为&a[0],则: p+i和a+i就是a[i]的地址,或者说它们指向a数组的第i个元素。 *(p+i)或*(a+i)...
数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组...
面向对象程序设计-数组 指针 引用PPT课件.pptx
关于二维数组和指针的介绍,非常好! 二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]...
C/C++ 数组和指针及引用的区别 1.数组和指针的区别 (1)定义 数组是一个符号,不是变量,因而没有自己对应的存储空间。但是,指针是一个变量,里面存储的内容是另外一个变量的地址,因为是变量所以指针有自己的...
c语言利用指针求数组的最大值与最小值,下载资源,数组可扩展。
◇ 第七章 指针与引用 - 课前索引 - 第一节 指针变量的定义与使用 - 第二节 动态内存分配 - 第三节 指针运算 - 第四节 指针与常量 - 第五节 指针作函数参数 - 第六节 指针与数组 - 第七节 函数指针 - 第八...
第8章 善于利用指针8.1 指针是什么8.2 指针变量8.3 通过指针引用数组8.4 通过指针引用字符串8.5 指向函数的指针8.6 返回指针值的函数8.7 指
总结:指针是一个变量,存放内存单元的地址,指针类型决定了指针解引用的时候有多大的权限,指针运算可以改变指针变量的地址,指针和数组是紧密相关的,二级指针是指针变量的指针,指针数组是一个数组,其中每个元素...
数组指针的操作: 移动数组指针的操作: Next() 向下 同时会获得当前元素的值。 Prev() 向上同时会获得当前元素的值。 End() 移动到最后一个元素单元 获得最后一个元素的值 Reset() 移动到第一个单元 获得第一个元素...
C++程序设计:第4章 数组指针和引用.ppt
介绍了数组、引用与指针之间的不同和联系。
程序设计基础
● 数组和指针之间的关系 ● 引用的概念及声明方法,关于使用引用的几点初步建议 ● 如何在本地C++程序中给变量动态分配内存 ● 如何在CLR 程序中动态分配内存 ● 跟踪句柄和跟踪引用的概念,CLR 程序...
非常经典,很好的说明了一维数组,二维数组与指针的关系,如何引用数组的的元素,以及地址表示, 总之,非常清楚了
数组指针函数有reset(),prev(),current(),next(),end(),key(),each() 其中reset(),prev(),current(),next(),end(),都是只与数组的值有关的函数,key()只与数组键,有关的函数,each()可以获得数组的值和键 reset...