一、指针的概念
指针是内存中的地址。
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>
分享到:
相关推荐
通过指针引用数组元素时,需要注意以下几点: * pointer+i 和 array+i 都是数组元素 array[i] 的地址。 * *(pointer+i) 和 *(array+i) 就是数组元素 array[i]。 * 指向数组的指针变量,也可以看作是数组名,因而...
在C语言中,指针和数组是两种非常重要的数据结构,它们可以组合成“指针数组”或“数组指针”,这为处理复杂的数据结构提供了灵活性。本文将深入讲解这两种概念。 一、数组指针与指针数组的区别 1. 数组指针:数组...
"C语言函数、数组、指针练习题" 1. 选择题1:C程序的执行是从main函数开始执行的。因此,正确答案是A。 2. 选择题2:使指针p1指向变量a,需要使用语句*p1=&a;。因此,正确答案是A。 3. 选择题3:一维数组初始化...
此外,还会讨论一些常见的陷阱和误区,如指针运算、指针解引用、数组越界等问题,以避免编程时出现错误。 在学习过程中,读者可能会遇到各种困惑,作者鼓励读者通过讨论和实践来深化理解。文中推荐了《C与指针》这...
#include using namespace std; //自定义结构体类型 struct date { int month; //结构体变量名定义 int day; int year; }; struct teacher { int num; char name[20]; struct date birthday;......
本章节主要讨论的是C语言中指针与一维数组之间的紧密关系。在C语言中,数组名实际上是一个指向数组首元素的常量指针。因此,指针和一维数组之间有着天然的联系。 1. **一维数组元素的引用** 数组名`a`代表了数组的...
因为 `++P` 将指针 `P` 移动到数组 `a` 的第三个元素 `30`,然后 `*` 将其解引用得到 `30`。 [8.7] 表达式 `++*P` 的值是 `21`。因为 `*P` 将指针 `P` 解引用得到 `20`,然后 `++` 将其递增得到 `21`。 [8.8] 程序...
5. **语法糖**:在很多情况下,C++允许将数组名和指针进行相似的操作,例如解引用和递增操作,但这仅仅是语法上的便利,并不代表它们是相同的。 ### 示例代码解析 在提供的示例代码中,作者通过几个简单的例子展示...
### 数组与指针的艺术 #### 一、前言与背景 本文档是对2005年发表的《再再论指针》一文的修订版本。与原版相比,新版文档进行了多方面的改进和扩展: 1. **引用C/C++标准**:作者通过引用C/C++标准的条款来阐述...
【计算机等级考试复习指导:计算机二级C++数组、指针与引用篇】 在计算机二级C++考试中,数组、指针和引用是重要的基础知识。数组是存储同类型数据的集合,分为一维数组、二维数组以及多维数组。 1. 一维数组 - ...
### C++数组与指针深入剖析 #### 一、引言 C++作为一种广泛使用的编程语言,其强大的功能和灵活性很大程度上得益于数组和指针的支持。数组和指针是C++编程的基础,也是理解更复杂数据结构的关键。本文将深入探讨...
在C++编程语言中,数组和指针是两个非常重要的概念,它们在处理大量数据时发挥着关键作用。数组提供了一种方式来存储同一类型的多个数据项,而指针则是指向这些数据项的地址,使得我们可以高效地访问和操作数组。 ...
- null指针异常:未初始化数组前直接访问会抛出NullPointerException。 - 遍历过程中修改数组:可能导致意外的结果,需谨慎处理。 9. **数组的内存分配** 数组在Java中是对象,存储在堆内存中。数组元素如果是...
例如,如果指针引用的是整型变量,则该指针就是整型指针;如果引用的是字符型数组,则是字符型指针。 #### 三、数组的概念与特性 **数组**是一种特殊的对象类型,用于存储相同类型的元素集合。数组类型由元素类型...
在编程世界中,数组和指针是C/C++等低级语言的核心概念,它们的理解与熟练运用对于程序设计至关重要。本学习资料集包含了对数组和指针的深度解析,旨在帮助学习者彻底掌握这两个概念。 首先,我们来深入探讨数组。...
在C语言中,数组和指针是编程的基础概念,它们紧密相连,经常一起使用。本章节将深入探讨这两个核心主题,结合"常东超、吕宝志、郭来德"编著的《C语言程序设计》第六章中的例题,我们将深入理解它们的工作原理和应用...
- **指针**:通过解引用操作访问所指向的数据。 ### 实际应用中的注意事项 虽然数组和指针有相似之处,但在实际编程中需要注意以下几点: - **类型安全**:在使用指针时应确保指针的类型与所指向的数据类型一致,...
3. 指针运算:可以使用 `*` 运算符对指针进行解引用,获取它所指向的值,如 `cout *ptr;`。也可以使用 `++` 或 `--` 对指针进行递增或递减操作,改变它所指向的地址。 4. 动态内存分配:通过 `malloc` 或 `calloc` ...
本章主要涵盖了数组的概念、维数、定义、初始化、元素引用以及数组与指针的关系。 一、数组的概念 数组是由一组相同类型的数据构成的序列,这些数据被称为元素。每个元素可以通过一个统一的名字标识,并通过下标来...
因此,对于二维数组,我们可以获得其首元素的一维数组指针,这是一维数组指针的指针,也称为二级指针。 二维数组的声明通常如下所示: ```cpp int arr[3][4]; ``` 这个声明创建了一个3行4列的二维数组。数组`arr`...