首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初识C语言——初识指针(什么内存,什么指针指针变量怎么用,指针的大小)

要认识指针,首先我们要知道什么内存。 1.内存 内存电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。...在C语言,有一种专门用来存储地址的变量,叫做指针变量。...("%c\n", ch); return 0; } 3.指针变量的大小 思考一个问题,整型变量的大小4个字节,char类型1个字节,double8个字节,那么指针变量的大小是多少?...为什么不同类型的指针变量大小一样的呢?又为什么4个字节呢? 原因指针用来存放地址的,所以指针变量的大小取决于地址的大小,而在同一平台上地址的大小固定不变的。...我们来验证一下: 在32位平台上: 4个字节 64位平台上: 8个字节 所以,我们得出结论: 指针变量的大小在同一平台固定的: 指针大小在32位平台4个字节,64位平台8

25610

C语言指针(野指针)

目录 1:什么指针?...2:如何规避野指针 1.1:指针变量的初始化 2.2:指针越界访问 3.3:指针指向的空间如果我们还回去的话,就把指针指针置为NULL  4.4:指针使用之前检查有效性 1:什么指针?...野指针:就是指针指向的位置不可知(随机性,初始化,不正确,没有明确限制),指针变量在定义时如果未初始化,其值随机的,指针变量的值别的变量的地址,意味着指针指向了一个地址不确定的变量,此时去解引用就是去访问了一个不确定的地址...:当你指针不知道怎么赋值,就赋值给一个空指针 NULL Null在计算中具有保留的值,用于指示指针不引用有效对象。...空指针不应与未初始化的指针混淆:保证空指针与指向有效对象的任何指针进行比较。但是,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言指针

    二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"直接通过变量名来读写变量 2.C语言中还有一种"间接引用"的方式(以变量a为例):首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...,可以成功读取的。 * 如果我改一下第5行的代码,用一个本应该指向int类型变量的指针p,指向char类型的变量c int *p = &c; 我们再来看一下输出: ?...当利用*p来获取变量c的值时,由于指针p知道变量cchar类型的,所以会从ffc3这个地址开始读取1个字节的数据:0000 0001,转为10进制就是1 2> 后来,我们用int *p指向变量c。...当利用*p获取变量c的值时,由于指针p认为变量cint类型的,所以会从ffc3这个地址开始读取2个字节的数据:0000 0010 0000 0001,转为10进制就是513 可见,给指针分类多么重要的一件事

    3.3K60

    C - 指针C语言指针的总结

    C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位字节,每一个字节都有一个内存地址,这个地址一个十六进制的数。...什么指针:变量的地址叫做指针指针就是地址,地址就是指针。 下面通过一张图可以更直观的理解内存中的地址 ? 内存中的地址演示图 2. 指针 指针C语言的灵魂。指针变量占据8个字节。...int *p1, * p2, * p3; 野指针 我们声明一个指针变量,如果没有为其初始化,那么这个时候这个指针变量中有值的,垃圾值,随机数。...指针为什么要分类型? 多级指针 一个指针变量中存储的一个一级指针的地址,那么它就是二级指针,一个指针变量中存储的一个二级指针的地址,那么它就是三级指针。...因此我们就可以声明1个指针用来存储这个函数的地址,也就是说让这个指针指向这个函数。这样我们就可以使用指针来间接的调用函数。 优势: 调用函数有了两种方式。 1.) 直接使用函数名调用 2.)

    4.2K81

    C语言——指针

    指针c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说...指针C语言的灵魂(doge) 由于通过地址能找到所需的变量单元,可以说,地址指向变量单元,打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008"指向"...3.指针指向空间释放即使置NULL 4.避免返回局部变量的地址 5.指针使用之前检查有效性 指针运算 小时候我们就知道1+1等于几 那我问你如果指针加1的话 加的那个数字 ?...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制的C的10进制12,所以q+1和q相差4  p整型指针相当于sizeof(int)=4 q字符型指针相当于sizeof(char)=1; 以上就是我归纳指针的一些小结 如果能帮助友友们 -

    2.3K20

    C语言: 指针

    目录 概念: 指针的类型 指针的解引用 野指针指针的成因 空指针 指针与数组 指针在数组中的使用: 二级指针 ---- 概念: 在计算机科学中,指针(Pointer)编程语言中的一个对象,利用地址...因此,将地址形象化的称为“指针”。意思通过它能找到以它为地址 的内存单元。 总的来说,指针就是变量,用来存放地址的变量。...指针的类型与指向的目标的类型一致,指针指向的目标的地址。...野指针 概念: 野指针就是指针指向的位置不可知的(随机的、不正确的、没有明确限制的)指针变量 在定义时如果未初始化,其值随机的,指针变量的值别的变量的地址,意味着指针指向了一 个地址不确定的变量...0; } 指针指向的目标变量的地址,那么二级指针指向的就是指针的地址。

    2K70

    C语言指针

    学习 C 语言指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针很有必要的。...指针变量就是一种变量, 和其他种类的变量类似, 但指针和其他变量又有区别. 首先C语言作为一种类型语言, 每个变量都会有几个属性. 变量名称. 变量类型. 变量的值....指针变量声明的一般形式为: type *var-name; 在这里,type 指针的基类型,它必须一个有效的 C 数据类型,var-name 指针变量的名称。...Address stored in ip variable: bffd8b3c Value of *ip variable:20 类型 对于C语言来说, 搞清楚变量的类型相当重要, 涉及到指针的时候就更加重要...整个来说: next一个指针, 指向一个函数, 函数的返回值也是一个指针, 指向一个类型为char的常量指针. C语言为类型语言, 即每个变量都有类型.

    2.7K20

    C语言_初识C语言指针

    前言 内存电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小一个字节。...为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址 编号 = 地址 = 指针 指针变量 = 变量 = 存放地址的变量 ---- 一、指针 … 一个内存单元多大比较合适.../0 32位机器,上面有32根地址线 2的32次方个字节的空间 - - - 4,294,967,296 Byte — 4GB ---- 通过pa里存放的a的地址找到a ---- 三、指针变量的大小...指针变量用来存放地址的 32位机器上:地址32个二进制位,这个地址要存储的话要4个字节,所以在32位机器上,指针变量的大小4个字节。...64位机器上:地址64个二进制位,这个地址要存储的话要8个字节,所以在64位机器上,指针变量的大小8个字节。

    19030

    C语言 | 指向指针指针

    “要成为绝世高手,并非一朝一夕,除非天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的日积月累的学习。 那么如何学习呢?当然每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例82:C语言用指向指针指针的方法对n个整数排序并输出;要求将排序单独写成一个函数;n个整数在主函数中输入,最后在主函数中输出。...解题思路:读者看着道题的时候,首先要观察一下有什么规律,然后指向指针指针在上一道练习题中已经有了铺垫,读者可以联系上一道题去熟练使用指向指针指针。...C语言源代码演示: #include//头文件 int main()//主函数 { void sort(int **point,int number); //sort排序函数声明

    3K32

    C语言指针(三)函数指针

    函数指针 在我们定义函数的时候,编译器也会在内存空间给函数开辟一个内存,而该内存的首地址就是函数的内存地址,而函数指针就是指向该内存地址的。...3.1 函数 众所周知,C语言面向过程的语言,或者称函数式编程。 而在C语言中,函数也确实起了很大的作用,在C语言的学习中,你见过最多的可能就是main函数,同时也是你第一个见得函数。...我们来看看这个main函数 int main(){return 0;} 我们把他浓缩成一行,比较好瞅 ❝ int返回类型,每个函数都要有这个,不返回东西的函数的返回值类型为void main数名,...固定的,无法重载 括号里面参数列表,一般默认没有,也可以传递void或者int argc, char const *argv[] {}大括号里面函数的具体实现代码,比如说printf("Hello...; return 函数结束的关键字,返回值为0表示程序正确运行,为其他表示有其他异常 切记main函数不要void main(){},这个真的很重要 ❞ 3.2 指向函数的指针 见名知意,这个东西也是一个指针

    2K00

    C语言指针)8

    qsort C语言中的一个库函数,使用 qsort 库函数需要包含头文件 。这个函数用来对任意数据类型的数据排序的。...其中最后一个参数一种函数指针类型,我们需要自定义一个比较函数将地址传给这个函数指针变量,再通过这个指针调用函数,这个函数就是一个回调函数。 上图为 qsort 函数的使用示例。...a和b的类型都是 void * 类型,而我们在之前的文章中说过 void * 类型的指针不能直接进行解引用的。...由于上面的程序排序整型数据,所以我们需要将 void * 类型的指针变量a和b强转为 int * 类型再解引用。...在 C语言指针)2 中我们说过这么两段话: 虽然void *类型的指针不能直接进行解引用操作,也不能 +- 整数的操作, 但是当我们不知道别人给我们传的地址是什么类型的时候,我们就可以放心地去用void

    8410

    C语言指针)9

    还记得我们开头对sizeof的介绍?sizeof后面的表达式不会真实参与计算,所以不存在越界。...首先来看第一个,++pcc使指针pcc指向了数组pc的第二个元素,解引用得到了第二个元素c+2,c+2也是一个指针,指向的数组c的第三个元素,再解引用就得到了数组c的第三个元素也就是字符串“point...再来看第二个,首先算++pcc,因为之前pcc已经指向数组pc的第二个元素,所以这次++pcc使指针pcc指向了数组pc的第三个元素,解引用得到了第三个元素c+1,c+1再--变为cc数组名其数组首元素的地址...pcc经过之前的两个自增运算已经指向了数组pc的第三个元素,此时-2指针pcc又重新指向了第一个元素,解引用得到c+3,c+3指向的数组c的第四个元素,解引用得到字符串“first”首字符‘f’的地址...最后看第四个,同样的将上面的代码转化一下变为:*(*(pcc - 1) - 1) + 1,pcc此时指向的数组pc的第三个元素,-1后指向了第二个元素,解引用得到c+2,c+2再-1得到c+1,c+1

    6410

    C语言指针(1)

    指针变量和地址 2.1 取地址操作符(&) C语言中创建变量就是向内存中申请空间 比如: &: 取地址操作符,个单目操作符 &a:表示取出a的地址 比如: int 型的变量占4个字节...,所以创建a变量向内存中申请了4个字节的空间 然而&a取出的00EFFF950 &a取出的a所占4个字节中地址较小的字节的地址 2.2 指针变量 指针变量: 指针变量用来存放地址的,存放在指针变量中的值都会被理解为地址...C语言中我们拿到了地址(指针),就可以找到地址(指针)指向的对象。 这里我们就要介绍一种操作符解引用操作符:* *p的意思通过p中存放的地址找到指向的空间。...(1)const放在* 的右边限制的指针变量本身,指针变量不能再指向其他变量了,但是可以通过指针变量修改指针变量所指向的内容 (2)const放在* 的左边限制的指针指向的内容,不能通过指针修改指针指向的内容...+整数 } return 0; } 6.2指针 - 指针 我们都知道日期-日期得到的两个日期之间的天数 所以指针-指针的绝对值得到的指针之间的元素个数 指针-指针的前提条件指针指针在同一块内存空间

    6510

    C语言指针详解

    指针  指向空,或者说不指向任何东西。在C语言中,我们让指针变量赋值为NULL表示一个空指针,而C语言中,NULL实质 ((void*)0) ,  在C++中,NULL实质0。  ...任何一个指针变量在做 解地址操作前,都必须保证它指向的有效的,可用的内存块,否则就会出错。坏指针造成C语言Bug的最频繁的原因之一。  下面的代码就是错误的示例。  ... 函数的参数和指针  C语言中,实参传递给形参,按值传递的,也就是说,函数中的形参实参的拷贝份,形参和实参只是在值上面一样,而不是同一个内存数据对象。...既然存放在内存中,那么函数也是有自己的指针的。  C语言中,函数名作为右值时,就是这个函数的指针。  ...附加知识 指针和引用这个2个名词的区别。他们本质上来说是同样的东西。指针常用在C语言中,而引用,则用于诸如Java,C#等 在语言层面封装了对指针的直接操作的编程语言中。

    2.1K20

    C语言C语言数组和指针

    ---- 友情提醒:本文可能全csdn最详细的指针内容了,希望你能用心读下去 前言 接下来的讲解部分指针的进阶,包含多种指针以及对应的数组,这部分章节对我们来说很重要,也是c语言中的重点模块儿,重要性不言而喻...,那么我们有必要在内存中储存两个一模一样的东西?...(c/c++会把常量字符串储存到单独的一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针的定义 1.数组指针嘛...答案显而易见,也就是去掉名字)所以名字才有类型,0都有函数指针类型了,那么0其实就是函数名 然后,对函数名进行解引用操作,拿到这个函数,对这个函数进行调用,又因为这个函数无参数的,所以调用这个函数时,...b); int* p(int a, int b); 代码1: p一个指针变量这个指针所指向的一个函数类型,这个函数的返回类型int参数分别也是两个int 代码2: p这里一个函数名

    64.7K37

    C语言初阶】指针的运算or数组与指针的关系你了解

    鸽芷咕:个人主页 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活!...本期文章收录在《C语言初阶篇》,大家有兴趣可以看看呐! ⛺️ 欢迎铁汁们 ✔️ 点赞 收藏 ⭐留言 !...指针的关系运算 指针指针的运算我们学了其实指针的运算还有一条规定: C语言标准规定: 允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较...但是:这并不符合C语言的标准,所以我们尽量不要这样写以免有些编译器跑不过去。...其实我们可以这样理解 指针变量就是指针变量,不是数组。指针变量的大小4/8个字节,用来专门存放地址的. 数组就是数组,不是指针,数组一块连续的空间。可以存放一个或,多个类型相同的数据。

    13410

    C语言指针进阶:字符指针&&数组指针&&函数指针

    ✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 感谢您的点赞与关注,同时欢迎各位有空来访我的平凡舍 --...其实很简单,这里str3和str4指向的一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当指针指向同一个字符串的时候,他们实际会指向同一块内存。...有的,下面,我们来看看什么数组指针 数组指针 数组指针指针?还是数组? 答案指针。 整形指针: int * pint; 能够指向整形数据的指针。...函数指针 什么函数指针? 数组指针——指向数组的指针就是数组指针 函数指针——指向函数的指针就是函数指针 怎么表示? 前面说到&数组名与数组名的区别,那&函数名与函数名有区别?...我们来看一看 结果一模一样的,对于函数来说,&函数名和函数名一样的,都是函数的地址 那函数指针有什么用呢? 这里间接通过函数指针调用函数,原来都是直接调用函数。我们今天不是这么用的。

    2.8K20

    C语言指针进阶

    一、指针变量 指针变量有字符指针变量,数组指针变量和函数指针变量 1、字符指针变量 char* 叫做字符指针 一般这么来使用:通过指针存储指针后解引用访问 int main() { char c =...官方解释: C/C++会把常量字符串存储到单独的⼀个内存区域,当几个指针指向同一个字符串的时候,他们实际会指向同一块内存。...,注意:用&arr来初始化 3、函数指针变量 ①函数指针变量的地址 每一个数据都有自己的地址,那么函数也有自己的地址,我们来看一下 #include void test() {...,并且函数名可以表示地址的,即在使用函数地址时,可以只写函数名 ②函数指针变量的定义 int (*pf) (int,int);//标准形式 int (*) (int, int);//函数指针变量pf的类型...,我们可以实现一维数组打印用指针来实现,那么二维数组几个一维数组的组合,指针能表示

    6910

    C语言指针(一)

    C语言给地址也起了一个新的名字:指针。...我们大致可以理解为: 内存单元的编号==地址==指针 2 指针变量和地址 2.1 取地址操作符(&) 在C语言中创建变量其实就是向内存申请空间, 上述代码就是创建了整型变量a,内存中申请了四个字节,用于存放整数...2.2.2 指针类型 int a=10; int* pa=&a; 上面代码中,pa的类型int*,*在说明pa指针变量,而前面的int在说明pa指向的整型(int)类型的对象。...如果指针变量用来存放地址的,那么指针变量的大小就得4个字节的空间才可以。...NULLC语言中定义的一个标识符常量,值0,0也是地址,这个地址无法使用的,读写该地址会报错。

    12410
    领券