热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于指针的浅析指针基础部分1

关于指针的浅析下面我们来认识下指针:1:首先谈一下指针的作用:a:指针是C语言中广泛应用的数据类型,运用指针编程是C语言最主要的风格之一b:指针能够用

关于指针的浅析

下面我们来认识下指针:
1:首先谈一下指针的作用:
a:指针是C语言中广泛应用的数据类型,运用指针编程是C语言最主要的风格之一
b:指针能够用来有效表示复杂的数据结构
c:指针能很方便操作数组字符串
d:指针能用于函数传递参数,减少内存的开销
e:指针能够像汇编一样处理内存地址,从而编写出精炼高效的程序

int a = 10;
获取a的地址printf(“%p\n”,&a);


变量的地址:

1:内存是以字节为 单元进行编制的,内存中的每个字节都对应一个地址,通过地址能够找个每个字节
2:变量对应内存中的一个存储单元,该单元占用一定的字节数,用这个 存储存储单元的第一个字节的地址表示变量的地址


什么是指针和指针变量:

指针变量:将&a存储到变量中,这个变量 就叫做指针变量,存放另外一个变量地址的变量叫做指针变量,指针变量用于存储变量的地址,指针变量的数值就是变量的地址
指针:指针变量中存储的变量的地址就叫做指针,指针就是地址
如:int *pointer = &a;
*代表的是指针元算服
pointer为指针变量
&取地址运算符
&a为变量的地址
p中存储的地址就是指针

#include
#includeint main(int argc,char* argv[]){int a = 10; /* *定义指针变量pointer,指向int类型*指针变量是会去分配内存大小的,而指针则是不会去分配内存空间的*/int *pointer = &a; printf("a address = %p\n",&a);printf("p value=%p\n",pointer);char ch = 'c';char *ch_pointer = &ch;printf("ch value = %c\n",ch);printf("ch address = %p\n",ch_pointer);/* *此处的*代表的是指向运算符,即翻译为指向ch_pointer中存储地址的这一块区域*/printf("ch value2 = %c\n",*ch_pointer);printf("ch_pointer size = %d pointer size = %d\n",sizeof(ch_pointer),sizeof(pointer));return 0;
}

其结果 为:
a address = 0x7fff6f7d73dc
p value=0x7fff6f7d73dc
ch value = c
ch address = 0x7fff6f7d73db
ch value2 = c
ch_pointer size = 8 pointer size = 8

由此我们可以看出来,变量a的地址与pointer中存储的值是一样的,说明,指针变量中存储的值其实就是第一个变量的地址,同时指针变量的大小是不会随着其指向类型的改变而改变的,在 这里是8个字节的


指针变量的定义语法如下:

类型说明符号 *指针变量名;
1:类型说明符为本指针所指向的变量的数据类型
2:*为指针运算符
3:根据变量类型的不同,指针可以是整形指针,字符型指针,浮点类型指针,数组指针,和其他类型指针

如: int *p1; //整形指针
char *p2; //浮点形指针
float *p3; //浮点型指针


推荐阅读
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
author-avatar
小白石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有