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

C - 指针C语言指针总结

C语言指针总结 1. 变量 不同类型变量在内存中占据不同字节空间。 内存中存储数据最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制数。...下面通过一张图可以更直观理解内存中地址 ? 内存中地址演示图 2. 指针 指针C语言灵魂。指针变量占据8个字节。 变量在内存中存储。 变量值:存储在变量中数据,叫做变量值。...*表示这个变量不是一个普通变量,而是一个专门用来存储地址指针变量,所以哪些普通数据类型,就可以哪些类型指针。...其实scanf函数传递就是指针,因此当函数需要多个返回值时候就可以使用指针作为参数。 // 从下面代码中就可以看出,我们可以直接在函数中修改两个变量值。相当于函数两个返回值。...程序在运行时候,会将程序加载到内存,内存代码段中主要存储就是程序代码,而程序代码就包括函数。既然函数要存储在内存中,那么肯定要用1块空间来存储,那么这个块空间一定有1个地址。

4.1K81

C语言 | 指向指针指针

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

3K32
您找到你想要的搜索结果了吗?
是的
没有找到

C语言指针(野指针)

2:如何规避野指针 1.1:指针变量初始化 2.2:指针越界访问 3.3:指针指向空间如果我们还回去的话,就把指针指针置为NULL  4.4:指针使用之前检查有效性 1:什么是野指针?...野指针:就是指针指向位置是不可知(随机性,初始化,不正确,没有明确限制),指针变量在定义时如果未初始化,其值是随机指针变量值是别的变量地址,意味着指针指向了一个地址是不确定变量,此时去解引用就是去访问了一个不确定地址...2:如何规避野指针 1.1:指针变量初始化 int a = 10; int* pa = &a; //指针变量初始化 指针常见错误 引用未初始化指针变量 试图引用未初始化指针变量是初学者最容易犯错误...未初始化指针变量就是“野”指针,它指向是无效地址。 有些书上说:“如果指针变量不初始化,那么它可能指向内存中任何一个存储单元,这样就会很危险。...空指针不应与未初始化指针混淆:保证空指针与指向有效对象任何指针进行比较。但是,根据语言和实现,未初始化指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针

2.6K20

C语言 | 指向指针指针排序

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历是日积月累学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...我故事,你有酒么? 例81:C语言实现用指向指针指针方法对5个字符串排序并输出。...解题思路:读者看着道题时候,首先要知道什么时指针,指向指针指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维。...C语言代码演示: #include//头文件 #include #define LINEMAX 20 //定义字符串最大长度 int main() {

1.7K32

C语言——指针

指针c语言一个重要概念,也是C语言一个重要特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C精华也可以说...指针C语言灵魂(doge) 由于通过地址能找到所需变量单元,可以说,地址指向变量单元,打个比方,一个房间门口挂了一个房间号2008,这个2008就是房间地址,或者说,2008"指向"...不如我们来段代码吧!  由此可以得出数组名和&数组名打印地址是一样。 我们再来看一段代码!  ...根据代码我们发现,其实&arr和arr,虽然值是一样,但是意义应该不一样 实际上&arr表示是数组地址而不是数组首元素地址。...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?

2.2K20

C语言指针

二、指针定义 三、指针初始化 四、指针运算符 五、指针用途举例 六、关于指针疑问 指针C语言中非常重要数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...默认情况下,一个函数只能有一个返回值,指针,我们可以实现函数"多返回值"。...和是函数直接返回值,差是通过函数第3个指针参数间接返回。 因此指针,我们可以让函数"无限个"返回值。...* 看下面的代码,利用指针p读取变量c值 1 int i = 2; 2 char c = 1; 3 4 // 定义一个指向char类型指针 5 char *p = &c; 6 7 // 取出 8...,是可以成功读取。 * 如果我改一下第5行代码,用一个本应该指向int类型变量指针p,指向char类型变量c int *p = &c; 我们再来看一下输出: ?

3.3K60

C语言_初识C语言指针

计算机 存储器 容量是以 字节 为最小单位来计算,对于一个128个存储单元存储器,可以说它容量为128字节。...存储器 被划分成了若干个存储单元,每个存储单元都是从0开始顺序编号,如一个存储器128个存储单元,则它编号就是从0-127。...为了能够有效访问到内存每个单元,就给内存单元进行了编号,这些编号被称为该内存单元地址 编号 = 地址 = 指针 指针变量 = 变量 = 存放地址变量 ---- 一、指针 … 一个内存单元多大比较合适...在计算机上,地址线,物理电线,高低电平信号,转换数字信号:1/0 32位机器,上面有32根地址线 232次方个字节空间 - - - 4,294,967,296 Byte — 4GB --...-- 通过pa里存放a地址找到a ---- 三、指针变量大小 指针变量是用来存放地址 32位机器上:地址是32个二进制位,这个地址要存储的话要4个字节,所以在32位机器上,指针变量大小是

15230

C语言: 指针

目录 概念: 指针类型 指针解引用 野指针指针成因 空指针 指针与数组 指针在数组中使用: 二级指针 ---- 概念: 在计算机科学中,指针(Pointer)是编程语言一个对象,利用地址...指针类型与指向目标的类型一致,指针指向是目标的地址。...例如: int a=10; int* p=&a; 总结: 指针类型决定了,对指针解引用时候多大权限(能操作几个字节)。...野指针 概念: 野指针就是指针指向位置是不可知(随机、不正确、没有明确限制指针变量 在定义时如果未初始化,其值是随机指针变量值是别的变量地址,意味着指针指向了一 个地址是不确定变量...0; } 指针指向是目标变量地址,那么二级指针指向就是指针地址。

2K70

C语言指针

学习 C 语言指针既简单又有趣。通过指针,可以简化一些 C 编程任务执行,还有一些任务,如动态内存分配,没有指针是无法执行。所以,想要成为一名优秀 C 程序员,学习指针是很有必要。...指针变量就是一种变量, 和其他种类变量类似, 但指针和其他变量又有区别. 首先C语言作为一种类型语言, 每个变量都会有几个属性. 变量名称. 变量类型. 变量值....对于指针变量, 可以认为4个属性. 指针变量名称. 指针变量类型, 即指针类型. 指针变量值, 即一个地址. 指针变量值所指向内存里数据类型. 本文称做"指向类型"....bffd8b3c Address stored in ip variable: bffd8b3c Value of *ip variable:20 类型 对于C语言来说, 搞清楚变量类型相当重要,...整个来说: next是一个指针, 指向一个函数, 函数返回值也是一个指针, 指向一个类型为char常量指针. C语言为类型语言, 即每个变量都有类型.

2.6K20

C语言(失效指针

曾经以为,C语言对我来说已经深入骨髓,所有语法细节早已烂熟于胸,直到我遇到了一道笔试题,一道丧心病狂笔试题,才渐渐明白,图样!图森破!哎我还是太年轻。。。...原题代码复杂,记不住,但考核关键语法点嘴脸如下: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100;...我们将源代码稍作修改: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100; p = &a;...将代码再改一下: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100; p = &a; //...} 下面是输出结果: p: 0xbfb4788 *p: 0xbfb4788 **p:0xbfb4788 简直不敢相信自己眼睛,在这段代码中,指针p仿佛中邪了,解引用符 * 对它不起作用了,不管p前面加了多少个

70220

谈谈C语言指针

C语言指针是啥? 举个栗子:新学期到了,小明正式开启了自己大学生活,他课表显示,今天上午十点,在教一204教室一节计算机专业课。小明迫不及待来到教一,但他不知道教一204教室是哪间教室。...这个时候,他在教一门口看见了一个指路牌,上面就写着教一204教室具体位置,于是他直奔教一204教室开始上课。 上述栗子中提到 指路牌 顾名思义,就类似于C语言指针。...指针专业术语: 指针是一种编程语言对象,它是存储位于计算机内存中另一个值内存地址。...参考资料:《C++ Primer Plus》 我们在编写C语言代码时,当写下一个 int a; 计算机就会帮我们在内存中给这个a分配一个内存,当我们对a赋值6时,计算机就会满世界在内存中寻找这个a地址...指针,我们只需再写下一个 int *p = a; 计算机就会帮我们做一件事,将a内存地址值告诉p,此时,*p就是a,我们只需对*p赋值6,于是计算机就直奔到a内存地址存储数据。

41020

C语言指针进阶

回调函数 ---- 指针进阶 前言 上文简易指针中我们介绍了一些常见简单指针用法 链接:简单指针 这期,咱们来学习进阶版指针用法。 1....我们看这段代码: #include int main() {    int arr[10] = {0};    printf("%p\n", arr);    printf(...&arr= %p\n", &arr); printf("arr+1 = %p\n", arr+1); printf("&arr+1= %p\n", &arr+1); return 0; } 这段代码结果就很明显...数组传参和指针传参 在写代码时候难免要把【数组】或者【指针】传给函数,那函数参数该如何设计呢?...甚至你可以用******都是可以。  6. 函数指针数组  一个数组中存放全是函数指针,那么这个数组就是函数指针数组。  上面代码可以看出。 为什么要把 [ ] 放在括号里面呢?

58430

C语言灵魂——指针

你需要了解函数、循环、数组等C语言知识 ---- C语言灵魂——指针 1.指针基本介绍 ---- 计算机每一个字节都有一个地址。...int a,当代码运行时候,计算机会在内存中开辟一些空间给a。分配多少空间,取决具体数据类型。 ---- 指针是一个变量,他存放这另一个变量地址。...5.指针和数组 二者之间很强联系。 数组名就是一个指针。 如果使用数组名,会得到一个指向数组首元素指针。 例如: int* p = a;我们甚至都不需要在a前写&。...---- 指针和字符数组 字符数组 在C语言中为了更高效操作字符串,我们需要理解一些事情, 我们如何把字符串存入和字符数组, 为了能够在字符数组中存储字符串,首要需求就是字符数组必须要足够大,大到能够容纳字符串...,字符数组大小要大于等于字符数量+1, C语言字符串必须以null结尾,这就是为什么我们需要一个额外空间,是用来存放null

84610

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

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

2K00

C语言函数传参:指针指针

这是道哥第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针指针,很常用一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...当然,p指向堆空间也就泄露了。 代码:版本2 代码本意是在do_malloc函数中申请堆空间,然后把这块空间首地址赋值给pData。...在do_malloc函数中,调用系统函数malloc成功之后返回所分配空间首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量中值等于这个堆空间首地址。...那应该如何通过中间一个函数来完成这个功能呢,如下代码: void do_malloc(char **p, int size) { *p = (char *)malloc(size + 1);...执行do_malloc(&pData, 128); 把pData指针地址作为实参进行传递,因为pData本身就是一个指针,加上取地址符&,就是指针指针(二级指针),因此do_malloc函数第一个参数就要定义成

2.1K20

C语言C语言数组和指针

---- 友情提醒:本文可能是全csdn最详细指针内容了,希望你能用心读下去 前言 接下来讲解部分是指针进阶,包含多种指针以及对应数组,这部分章节对我们来说很重要,也是c语言重点模块儿,重要性不言而喻...(c/c++会把常量字符串储存到单独一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针定义 1.数组指针嘛...,那其实非常简单,就是指向数组指针,数组哪些组成部分呢?...,所以我们就可以用数组指针来接受这个参数 2.知识点 * (*(p+i)+j)这个代码很多人是比较难理解,我们重点来讲解一下这个代码,由知识点1可以知道p代表第一行数组地址,那么如果我们对这个地址进行...一定要记住了 也是很重要知识:我们再设计函数参数来接收地址时,两个选择,你觉得哪个方便就用哪个,一个选择是用指针接收地址,另一个选择是,就用它本身去接收他自己(这个非常重要,因为我怕你在平常阅读代码时候

64.2K22

C语言指针详解

参考链接: C/C++指针与Java引用 前言 这不是我第一次写关于C指针文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针理解越多,因此了本文。...然而,想要全面理解指针,除了要对C语言熟练掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以我想通过一篇文章来尽可能讲解指针,以对得起这个文章标题吧。 为什么需要指针?...下面用代码说明     按 Ctrl+C 复制代码     按 Ctrl+C 复制代码    指针值实质是内存单元(即字节)编号,所以指针 单独从数值上看,也是整数,他们一般用16进制表示。...任何一个指针变量在做 解地址操作前,都必须保证它指向是有效,可用内存块,否则就会出错。坏指针是造成C语言Bug最频繁原因之一。  下面的代码就是错误示例。  ...既然是存放在内存中,那么函数也是自己指针。  C语言中,函数名作为右值时,就是这个函数指针

2.1K20

C语言——指针(四)

,能够指向数组指针变量 我们来看下面哪个是数组指针(注意看类型): int *p1[10]; int (*p2)[10] 答案: p1是:数组里十个元素,每个元素类型是int*指针数组...p2是:指向数组,这个数组十个元素,每个元素类型是int数组指针 解释: 在这里我们要注意符号结合优先级:[]优先级高于*号 1)p1先与[10]结合→构成一个10个元素数组,数组类型为...int* 2)p2在()限制下,先与*号结合构成指针,指向十个元素数组,数组类型是int 下图是数组指针类型解析: 2,数组指针初始化 和其他类型变量初始化相似,只需给变量赋一个符合类型值就行了...,类型是int()[5] 三,函数指针变量 函数指针变量就是用来存放函数地址指针变量 了函数地址以后,我们就可以通过地址来调用函数 1,函数地址 函数有没有地址?...我们做个测试 我们发现:1,函数也是地址,可以用 &函数名 来获得,2,函数名表示是函数地址 2,创建函数指针 函数指针写法与数组指针类似,下面进行函数指针创建展示 void test

6510
领券