`

关于指针

 
阅读更多

指针是什么?

    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语言关于指针学习的教程

    本教程“C语言关于指针学习的教程”深入浅出地介绍了这一主题,旨在帮助初学者掌握这一重要的编程工具。 首先,我们要理解什么是指针。在C语言中,指针是一个变量,它存储的是另一个变量的地址。换句话说,指针指向...

    c free关于指针练习的PPT教程

    在“C Free 关于指针练习的 PPT 教程”中,主要涵盖了以下几个关键知识点: 1. **指针概念**:指针是一个存储内存地址的变量,它“指向”内存中的一个数据单元。通过指针,可以直接访问和修改该内存单元的值。 2. ...

    好东西 关于指针和类型转换的合集

    以下是一些关于指针的重要知识点: 1. **指针声明**:指针的声明通常包含类型和星号(*),例如`int *p;`表示`p`是一个指向整型变量的指针。 2. **指针初始化**:指针在声明后需要初始化,否则它们将包含未定义的值,...

    关于指针的15个经典面试题

    ### 关于指针的15个经典面试题详解 #### 1. 常指针与常量的指针 **题目**: `char*const p;`、`char const *p;` 和 `const char *p;` 这三个有什么区别? **解答**: - **`char*const p;`**: 这里定义了一个指向`...

    关于指针递增的操作使用

    关于指针递增的操作,描述指针和引用的区别,通过代码看出指针的优势和地址变量的使用

    关于指针细节学习,简单清楚!

    ### 指针细节学习详解 #### 一、理解指针的基本概念 ##### 1. 指针的定义 指针是一种特殊的数据类型,在计算机编程中被广泛使用。指针变量用来存储其他变量的内存地址。理解指针的关键在于区分以下几个概念: - ...

    指针c++关于指针的讲解

    在C++编程语言中,指针是一个至关重要的概念,它允许程序员直接操作内存地址,从而实现高效的数据操作和复杂的程序设计。以下是对指针的详细解释: 指针是C++中的一种特殊变量,它存储的是另一个变量的内存地址。...

    C语言关于指针

    关于以语言的,大家看了会懂一些的,我相信会的

    关于指针(让你不再害怕指针)

    要掌握指针,首先我们需要理解四个关键概念:指针的类型、指针所指向的类型、指针的值以及指针自身占用的内存区。 1. **指针的类型** 指针的类型决定了它能存储哪种类型的内存地址。在声明指针时,紧跟在变量名...

    c++关于指针的学习资料

    C++中的指针是编程语言的关键特性之一,它允许直接操控内存,提供了高效的数据操作和复杂的程序设计。本文将深入探讨指针的概念、使用规则、运算以及类型转换,旨在帮助初学者掌握这一核心概念。 首先,我们要理解...

    关于指针的程序

    该程序主要利用指针操作来完成任务,因此,下面将从指针的基础知识出发,详细介绍该程序中的核心概念及其实现逻辑。 ### 指针基础知识 在C语言中,指针是一种非常重要的数据类型,它存储的是变量或数据结构的内存...

    关于指针的总结

    指针符号(*)去掉,剩下的部分就是指针所指向的类型。继续分析例一中的指针: (1)int*ptr; // 指针所指向的类型是 int (2)char*ptr; // 指针所指向的类型是 char (3)int**ptr; // 指针所指向的类型是 int* (4)int(*...

    C语言方面关于指针的介绍

    本文将深入探讨C语言指针的相关知识,包括指针的概念、指针的类型、指针所指向的类型、指针的值以及指针的算术运算。 首先,我们要理解指针的概念。指针是一个特殊的变量,它存储的是内存地址,即内存中某个位置的...

    关于指针很好的解释,我就是看了这个彻底明白了~

    指针是C++编程语言中的一个核心特性,它允许程序员直接操作内存地址,从而实现高效的数据处理和复杂的数据结构管理。以下是对指针的详细解释: 指针的优点主要体现在以下几个方面: 1. 函数参数传递:通过指针,...

    关于指针的一些总结,欢迎下载

    在本文中,我们将深入探讨指针的四大方面:指针的类型、指针所指向的类型、指针的值以及指针本身所占据的内存区。 首先,**指针的类型**指的是指针变量自身的类型,这决定了指针可以存储哪种类型的内存地址。例如,...

Global site tag (gtag.js) - Google Analytics