`

C语言入门之指针用法教程

    博客分类:
  • c
阅读更多

本文针对C语言初学者详细讲述了指针的用法,并配以实例进行说明。具体分析如下:

对于C语言初学者来说,需要明白指针是啥?重点就在一个“指”上。指啥?指的地址。啥地址?内存的地址。

上面说明就是指针的本质了。

这里再详细解释下。数据存起来是要存在内存里面的,就是在内存里圈出一块地,在这块地里放想放的东西。变量关心的是这块地里放的东西,并不关心它在内存的哪里圈的地;而指针则关心这块地在内存的哪个地方,并不关心这块地多大,里面存了什么东西。

指针怎么用呢?下面就是基本用法:

1
2
3
4
5
int a, b, c;
double f;
 
int *pt_a = &a, *pt_b = &b, *pt_c = &c;
double *pt_f = &f;

上面两行声明了三个int类型的变量a,b,c,一个double类型的变量f。下面就是指针的用法了,声明变量的时候只需要在变量前面加上“*”这个符号就说明了这个变量是指针,而前面的“int”说明指针指向的内存里面存放着int类型的变量。

变量和指针的声明也可以放到一起:

1
2
3
4
5
int a, b, c;
double f;
 
int other, *pt_a = &a, *pt_b = &b, *pt_c = &c;
double x = 0, *pt_f = &f;

然后就是新的运算符——“&”了。是不是很熟悉?没错,这个就是scanf里面的那个“&”。它是取地址符,即用在变量前面使用这个运算符,能够获得这个变量在内存里面的地址。由此就可以解释scanf双引号后面为何要使用“&”了,就是将前面按照格式读进来的数据,按照后面给出的地址直接填进内存里,所以scanf双引号后面提供的参数实质上并不是希望赋值的变量,而是希望保存数据的地址。所以,例如如果有int类型的变量a,同时有指向它的指针pt,那么下面两句是等效的:

1
2
scanf("%d", &a);
scanf("%d", pt);

回到指针,接下来就是修改指针指向变量的值了,怎么弄呢?下面就是例子:

1
2
3
int a;
int *pt = &a;
*pt = 123; // 该语句等同于 a = 123;

不要把“*”给忘了哈。

至于这个“*”符号,可以这么理解:需要用到指针指向的内容时,加上“*”,此时它等同于一个变量;只是需要指针的地址时,不需要加“*”,此时它代表内存的地址。

而指针也可以改变它指向的地址:

1
2
3
4
int a, b, c;
int *pt_a = &a, *pt_b = &b;
pt_b = &c;
pt_a = pt_b;

很多教材都在强调野指针的问题,什么叫野指针?呃……可以叫做“撒野”的指针。什么意思呢?举个例子,如果声明了一个指针pt,而没让他指向任何变量,那么它指向哪里呢?答案是:不确定,整个内存哪里都有可能被它指到。如果此时修改它指向的内容,而它恰好指向了系统某个关键的进程……那后果就比较严重了。所以指针用之前一定让它指点东西。如果想让它什么都不指,怎么办?很简单,指向NULL即可。

这就是指针了。可能看完很多人会觉得本来用变量你又加了个指针指不是更麻烦?我要说的是,这只是最基本的用法。C语言的数组中,还有一些复杂的数据结构都需要用到指针。所以这些基础的东西还是有必要加以熟练掌握的。

希望本文所述对大家C语言程序设计的学习有所帮助。

分享到:
评论

相关推荐

    C语言入门教程 指针操作

    指针是C语言中最强大且容易出错的特性之一。指针变量保存的是变量的地址,而非变量的值。通过声明指针变量,我们可以访问特定类型的数据。指针的声明形式如`int* ptr;`,表明`ptr`是一个指针,它指向一个int类型的...

    谭浩强 C语言入门教程 word版

    【谭浩强 C语言入门教程】是一本深受初学者欢迎的编程教材,由著名计算机教育专家谭浩强教授编写。这本书以清晰易懂的语言,系统地介绍了C语言的基础知识和编程技巧,是学习C语言的经典之作。Word版的教程使得读者...

    51单片机及C语言入门教程

    《51单片机及C语言入门教程》是一份针对初学者精心编写的教程,旨在帮助读者快速掌握51单片机的基础操作以及C语言在单片机编程中的应用。51单片机是微控制器领域中最经典的系列之一,由于其结构简单、易于理解和应用...

    C语言入门教程.ppt

    总的来说,《C语言入门教程》是一份适合新手的优秀资源,它以直观易懂的方式传授C语言的基本原理和编程技巧,为编程之旅提供了良好的起点。无论你是完全的新手,还是想重温基础知识,都可以从中受益。通过反复练习和...

    程序设计基础 C语言程序设计 C语言入门教程 第10章 指针 共62页.pptx

    "程序设计基础 C语言程序设计 C语言入门教程 第10章 指针" 本章节主要讲解了C语言中的指针概念,包括指针的定义、指针变量的声明、指针的使用、指针与数组、指针与函数等知识点。 1. 指针的概念 在C语言中,指针...

    c语言入门教程及100例

    “C语言入门教程及100例”这个资源为初学者提供了一个良好的学习平台,通过系统学习和大量实践,相信你可以快速掌握C语言,开启编程之旅。在学习过程中,遇到困难不要气馁,多思考、多动手,你会发现编程其实并不难...

    C语言入门PPT教程

    本“C语言入门PPT教程”将深入浅出地讲解以上所有知识点,并通过实例演示来帮助初学者更好地理解和掌握。通过学习,你将具备编写简单C程序的能力,并为进一步深入学习其他编程语言和系统级编程打下坚实基础。

    C语言入门经典教程及100个实例

    《C语言入门经典教程及100个实例》是一本专为初学者设计的编程教材,旨在帮助读者快速掌握C语言的基础知识,并通过丰富的实例来加深理解和应用能力。C语言是一种广泛应用的计算机编程语言,因其高效、灵活和底层特性...

    C语言教程之指针,入门到精通

    ### C语言教程之指针详解 #### 指针概述 C语言中,指针是一种极为重要的特性,它使得程序员可以直接操作内存地址,这不仅增强了C语言的强大功能,也让程序编写更加灵活高效。掌握指针是学习C语言的关键,本文旨在...

    vip 特别重要 51单片机及C语言入门教程2007_明浩.rar

    《51单片机及C语言入门教程》还涵盖了51单片机的开发环境设置,如Keil uVision等IDE的使用,以及如何编写、编译、下载和调试程序。通过这些步骤,学习者可以建立起从编写代码到实现功能的完整流程。 学习本教程,你...

    C语言从入门到精通

    《C语言从入门到精通》是一本专门为初学者设计的C语言教程,旨在帮助读者从零基础逐步掌握C语言编程技能。C语言是计算机科学的基础,对于理解计算机工作原理和进行系统级编程具有重要意义。这本书深入浅出地介绍了...

    c语言入门到精通(实例版)视频教程2

    "C语言入门到精通(实例版)视频教程2"显然是为了帮助初学者逐步掌握C语言而设计的一套教学资源。以下是基于这个主题的详细知识点解析: 1. **基本语法**: C语言的语法简洁明了,包括变量声明、数据类型(如int、char...

    C语言入门电子书 C语言入门

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发以及游戏开发等领域的高级编程语言。它由贝尔实验室的Dennis Ritchie在1972年设计,以其简洁、高效和灵活性著称。C语言是许多现代编程语言的基石,如C++、Java...

    C语言实用入门教程(PPT)

    **C语言实用入门教程概述** C语言是一种强大的、低级的编程语言,它以其简洁、高效和灵活性而闻名。这本“C语言实用入门教程”是专为初学者设计的,旨在帮助他们快速掌握C语言的基本概念和编程技巧。教程分为26个...

    c语言入门到精通(实例版)视频教程1

    《C语言入门到精通(实例版)视频教程1》是一套专为初学者设计的全面学习C语言的教育资源。该教程以实例为主导,旨在帮助学习者通过实践掌握C语言的基础概念和编程技巧。 C语言是一种强大的、低级别的编程语言,被...

    C语言入门实用知识库分享

    "C语言入门实用知识库分享" ...* C语言入门15:hello world之旅 + HelloWorld程序的概念和应用 + HelloWorld程序的实现方法 通过本资源,读者可以系统化地学习C语言,掌握编程基础知识,提高编程能力。

    C语言入门经典 第4版/第四版 (美)霍顿 杨浩 c语言入门经典

    《C语言入门经典 第4版》是学习C语言的经典教材之一,由美国的霍顿(Deitel & Deitel)和杨浩共同编写。这本书以其深入浅出的方式,为初学者提供了全面而系统的C语言知识。在学习过程中,解决课后习题是巩固知识、...

Global site tag (gtag.js) - Google Analytics