指针是什么?
K&R中关于指针一词做如下解释:
指针是一种保存变量地址的变量,在C中频繁地使用。
这种解释直接有把指针当做变量的意思,但是事实并非如此。
经常说的指针实际上是指“指针类型”、“指针类型变量”、“指针类型的值”。
像int a=5;一样,有“int类型”、“int类型变量”(a)、“int类型的值”(5)。
“指针类型”是由其他类型派生的,也就是说,它包含“指向int的指针类型”、“指向double的指针类型”;
“指针类型的值”在程序中实际上就是内存的地址。
#include <stdio.h> int main() { int hoge=5; int piyo=10; int *pHoge; /*输出每个变量的地址*/ printf("&hoge...%p\n",&hoge); printf("&piyo...%p\n",&piyo); printf("&pHoge...%p\n",&pHoge); pHoge=&hoge; //hoge的地址赋给pHoge printf("pHoge...%p\n",pHoge); printf("*pHoge...%d\n",*pHoge); *pHoge=10; //通过pHoge修改hoge printf("hoge...%d\n",hoge); }
代码中,pHoge是指向int的指针变量,它取值为&hoge,&hoge是hoge的地址,也就是指针类型的值。
“*pHoge”表示指向该地址的变量,而hoge变量指向了这个地址,所以*pHoge等同于hoge。
指向int的指针类型与指向double的指针类型有区别吗?有,因为编译器会记住指针所指向的类型,这两张类型相互赋值时都会受到编译器的警告。在指针进行加N时,指针的值(内存地址)会增加“N*所指向类型的长度”。
空指针NULL是特殊的指针类型的值,它确保指针没有指向任何对象。NULL可以对任何类型的指针变量赋值。在 stdio.h里面定义为:#define NULL 0
另外,空字符'\0'实际上也是值为0的字符。
数组可以解读为指向它的初始元素的指针,p[i]是*(p+i)的简便写法,下标运算[]原本就是这种用法,它和数组无关。对于编译器,[]这样的运算完全可以不存在。
数组作为参数进行函数参数传递时,传递的是初始元素的指针。
相关推荐
指针是C++编程语言中的一个核心概念,也是许多初学者感到困惑的地方。它是一种特殊的数据类型,可以...文档“让你不再害怕指针.doc”应该提供了更多关于指针的详细解释和实例,帮助你进一步理解和运用这一关键概念。
### C语言关于指针的经验之谈 在C语言的学习过程中,指针是一个极其重要的概念,也是许多初学者感到困惑的地方。然而,对于任何想要成为高级程序员的人来说,掌握指针是必不可少的一步。本文将深入探讨指针的基础...
### C语言中关于指针部分的详细总结 在C语言中,指针是一个非常重要的概念,也是学习过程中较为复杂的一部分。本文将详细总结C语言中有关指针的基础知识及其应用场景,特别是指针数组和数组指针的区别及使用方法。 ...
本教程“C语言关于指针学习的教程”深入浅出地介绍了这一主题,旨在帮助初学者掌握这一重要的编程工具。 首先,我们要理解什么是指针。在C语言中,指针是一个变量,它存储的是另一个变量的地址。换句话说,指针指向...
在“C Free 关于指针练习的 PPT 教程”中,主要涵盖了以下几个关键知识点: 1. **指针概念**:指针是一个存储内存地址的变量,它“指向”内存中的一个数据单元。通过指针,可以直接访问和修改该内存单元的值。 2. ...
以下是一些关于指针的重要知识点: 1. **指针声明**:指针的声明通常包含类型和星号(*),例如`int *p;`表示`p`是一个指向整型变量的指针。 2. **指针初始化**:指针在声明后需要初始化,否则它们将包含未定义的值,...
### 关于指针的15个经典面试题详解 #### 1. 常指针与常量的指针 **题目**: `char*const p;`、`char const *p;` 和 `const char *p;` 这三个有什么区别? **解答**: - **`char*const p;`**: 这里定义了一个指向`...
关于指针递增的操作,描述指针和引用的区别,通过代码看出指针的优势和地址变量的使用
### 指针细节学习详解 #### 一、理解指针的基本概念 ##### 1. 指针的定义 指针是一种特殊的数据类型,在计算机编程中被广泛使用。指针变量用来存储其他变量的内存地址。理解指针的关键在于区分以下几个概念: - ...
在C++编程语言中,指针是一个至关重要的概念,它允许程序员直接操作内存地址,从而实现高效的数据操作和复杂的程序设计。以下是对指针的详细解释: 指针是C++中的一种特殊变量,它存储的是另一个变量的内存地址。...
关于以语言的,大家看了会懂一些的,我相信会的
要掌握指针,首先我们需要理解四个关键概念:指针的类型、指针所指向的类型、指针的值以及指针自身占用的内存区。 1. **指针的类型** 指针的类型决定了它能存储哪种类型的内存地址。在声明指针时,紧跟在变量名...
C++中的指针是编程语言的关键特性之一,它允许直接操控内存,提供了高效的数据操作和复杂的程序设计。本文将深入探讨指针的概念、使用规则、运算以及类型转换,旨在帮助初学者掌握这一核心概念。 首先,我们要理解...
该程序主要利用指针操作来完成任务,因此,下面将从指针的基础知识出发,详细介绍该程序中的核心概念及其实现逻辑。 ### 指针基础知识 在C语言中,指针是一种非常重要的数据类型,它存储的是变量或数据结构的内存...
指针符号(*)去掉,剩下的部分就是指针所指向的类型。继续分析例一中的指针: (1)int*ptr; // 指针所指向的类型是 int (2)char*ptr; // 指针所指向的类型是 char (3)int**ptr; // 指针所指向的类型是 int* (4)int(*...
本文将深入探讨C语言指针的相关知识,包括指针的概念、指针的类型、指针所指向的类型、指针的值以及指针的算术运算。 首先,我们要理解指针的概念。指针是一个特殊的变量,它存储的是内存地址,即内存中某个位置的...
指针是C++编程语言中的一个核心特性,它允许程序员直接操作内存地址,从而实现高效的数据处理和复杂的数据结构管理。以下是对指针的详细解释: 指针的优点主要体现在以下几个方面: 1. 函数参数传递:通过指针,...
在本文中,我们将深入探讨指针的四大方面:指针的类型、指针所指向的类型、指针的值以及指针本身所占据的内存区。 首先,**指针的类型**指的是指针变量自身的类型,这决定了指针可以存储哪种类型的内存地址。例如,...