如何用c语言创建指针(create pointers in c)

指针是每个新C程序员的噩梦。然而,正是这些特性使C语言成为了如今广泛使用的强大编程语言。与许多其他编程特性和构造一样,创建和使用C指针有一种系统化的方法。这篇文章是一个循序渐进的指南,以清晰而简单的方式创建和使用指针。...

步骤

  1. 1确定指针的类型(即指针将指向的数据类型)。以下提示可能会有所帮助:如果要声明动态数组,请使用数组项的数据类型。如果要声明指针以访问变量的数据,请使用与变量相同的数据类型。如果要声明指针以遍历列表结构,请使用列表节点数据类型(通常是用户创建的结构)。如果要声明遍历树的指针,请使用树节点的数据类型,或使用指向树节点类型的指针作为类型(指向树节点类型的指针!)。
  2. Image titled Create Pointers in C Step 1
  3. 2Declare指针使用如下语法:数据类型*指针标识符;其中数据类型是您在步骤1中确定的类型指针标识符是指针变量的标识符或名称
  4. Image titled Create Pointers in C Step 2
  5. 3将指针分配到初始内存位置。这可以使用以下方法之一完成:分配内存并用指针指向它:int*i=malloc(sizeof(int)*n);其中n是要分配的内存块数。将变量的地址分配给指针:int*i=&十、其中“x”是一个整数和(&)意思是地址。将数组标识符分配给指针:int*i=array1;其中,array1是一个整数数组(int[]array1;)。为指针分配一个引用:int*i=a;其中“a”是一个整数引用(int&a;)。为指针分配另一个指针:int*i=z;其中“z”是另一个整数指针(int*z;)
  6. Image titled Create Pointers in C Step 3
  7. 4每当需要提取指针当前指向的数据项时,使用地址运算符(*)处的值:int x=*i;其中i是一个整数指针。
  8. Image titled Create Pointers in C Step 4
  9. 5每当你想在指针旁边获得一个内存位置而不实际推进指针时,就把指针当作一个数组来使用索引运算符。例如,如果您有一个整数指针i,那么可以使用i[2],它将检索紧跟在引用所指向的整数之后的整数(即当前位置之后的2个整数)。指针仍然指向同一个内存位置。另一种替代方法是在该指针后两步获取指针处的值:*(i+2)
  10. Image titled Create Pointers in C Step 5
  11. 6需要更改当前位置时,请使用递增(++)、递减(-)、+=和-=运算符。i+=5;将整数指针i向前推进5个整数。
  12. Image titled Create Pointers in C Step 6
  13. 7使用完指针后,如果为该指针分配了内存,请确保使用free()函数释放分配的内存。(i)免费;我是一个指针)
  14. Image titled Create Pointers in C Step 7
  • 查看Boehm垃圾收集器。安装后,您可以通过包含gc来使用它。h并用gc_malloc()替换malloc()。使用垃圾收集器可以减少内存错误,但根据程序的不同,可能会提高或降低性能。
  • 通常最好保持一个指针指向您分配的任何内存,以便以后可以释放它。
  • 将指针声明为结构的成员时,可以使用点(.)运算符,然后使用(*)运算符访问指针指向的值。例如,如果有一个结构s1,其中有一个整数指针成员c,并且声明了一个变量s(结构s1s;),s、 c将访问指针本身(s.c=&i),*s.c将访问成员c指向的数据(j=*s.c)。
  • 如果您有一个使用malloc()分配的结构,该结构返回指向该结构的指针,则使用->操作人员假设结构s1再次出现,并且s已被声明为指向该结构类型的指针,下面将分配变量的地址并分别引用该变量:s->c=&Jk=*s->c、 一些程序员选择编写*(s->c)以清晰明了,尽管这不是必需的。
  • 考虑使用诸如ValgRIND(Linux)之类的调试工具,它可以帮助识别内存泄漏,并跟踪指针指向“越界”数据的使用。
  • 通过检查返回的指针是否不等于NULL或0,检查malloc()是否成功分配了适当的内存块,这是一种很好的编程实践。
  • 发表于 2022-03-19 16:00
  • 阅读 ( 88 )
  • 分类:通用

你可能感兴趣的文章

c(c)和目标c(objective c)的区别

关键区别——c与目标c 编程语言对于为计算机执行特定任务创建有意义的指令集非常有用。两种广泛使用的编程语言是C和Objective C。Objective C是基于C语言的。因此,C程序可以作为目标C进行编译和运行。目标C由基本C以及面向...

  • 发布于 2020-10-16 06:52
  • 阅读 ( 262 )

结构(structure)和c中的并集(union in c)的区别

关键区别——c语言中的结构与联合 数组是C语言支持的数据结构。数组可用于存储相同类型的数据元素。如果有一个语句是int marks[10];那么marks是一个数组,可以存储10个标记,并且所有这些标记都是整数。有时需要将不同类...

  • 发布于 2020-10-19 06:29
  • 阅读 ( 181 )

代表(delegates)和c中的事件#(events in c#)的区别

...es)和c中的事件#(events in c#)的区别 C是微软开发的一种编程语言。它支持结构化编程和面向对象编程。委托和事件用于C中的事件驱动编程。委托是指向方法的类型安全指针。在具有图形用户界面(GUI)的应用程序中,有按钮等。...

  • 发布于 2020-10-24 02:21
  • 阅读 ( 211 )

指针(pointer)和参考(reference)的区别

指针(pointer)和参考(reference)的区别 在讨论指针和引用之间的区别之前,让我们先简单地看一下这两个术语的含义。在程序中,数据占用内存。为了访问数据,应该知道数据在执行时被放在内存中的确切位置。指针变量和引用...

  • 发布于 2020-10-28 19:41
  • 阅读 ( 264 )

c编程的特点,使其独特(和更好)

C编程语言是所有现代编程语言之母。几乎现在使用的每一种语言都包含了一些最早出现在C语言中的特性。它已被广泛用于为最小的嵌入式微型计算机向最大的大型机和超级计算机编写软件。 ...

  • 发布于 2021-03-13 04:35
  • 阅读 ( 214 )

如何用pxe从windowsserver2008启动ubuntu映像

本指南解释了如何配置WindowsServer2008机器来推出一个静态的Ubuntu映像,这个映像可以被无盘终端获取,这样你就可以让任意数量的机器运行一个功能齐全的Ubuntu实例,而不需要硬盘,只要它们能够进行PXE引导。 这是Alexander Karniti...

  • 发布于 2021-04-11 21:05
  • 阅读 ( 196 )

如何用microsoftword像pro一样创建索引表

...,这次单击“确定”按钮创建索引。 这就是我们关于如何用一致文件创建索引表的全部内容。让我们仔细看看如何定制索引样式。 在索引中创建交叉引用 Word允许我们创建不同类型的索引。这里我们有一个带有子条目的索引,...

  • 发布于 2021-04-13 04:26
  • 阅读 ( 155 )

整数(integer)和指针(pointer)的区别

整数与指针 “整数”和“指针”在大多数计算机编程语言中都有应用。 编程语言中的“整数”可以定义为表示数学子集的任何数据类型。另一方面,“指针”可以定义为一种类型,它引用或指向存储在计算机内存某个部分的...

  • 发布于 2021-06-23 14:07
  • 阅读 ( 246 )

java(java)和c(c)的区别

Java与C C和Java都是强大的编程语言,有许多优点。C更像是一种面向过程的编程语言,这意味着有一个过程要为某些任务编写,程序是通过调用这些过程来构建的。众所周知,Java是一种面向对象的编程语言,其中OOP用于定义类。...

  • 发布于 2021-06-23 22:05
  • 阅读 ( 232 )

指针(pointer)和参考(reference)的区别

...地理解哲学,让我们来理解两者的区别。 什么是指针(a pointer)? 每个变量都是一个内存位置,由其地址定义,并与一个标识符配对,该标识符包含一些在程序运行过程中可能更改的值。简单来说,变量是表示一个量的符号。 指...

  • 发布于 2021-06-25 06:41
  • 阅读 ( 461 )
gakxt2cg
gakxt2cg

0 篇文章

相关推荐