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

C语言之指针(中)

前言 承接同系列文章C语言之指针(上),本文将进一步介绍指针的相关知识。...("str3 and str4 are same\n"); else printf("str3 and str4 are not same\n"); return 0; } 那么,这个程序最终输出的结果是什么呢...return 0; } 没错,它表示的是数组指针数组(存放数组指针的数组) ---- 总结 以上就是今天要讲的内容,本文介绍了C语言中指针的相关知识,主要包括有字符指针、指针数组、数组指针、数组参数与指针参数...但由于篇幅原因,在这一篇文章中仍不能将所有的知识全部总结完,因此后续还是会不断补充关于C语言中的指针的内容,希望大家继续支持。...本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

74920

【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )

文章目录 一、二级指针 二、完整代码示例 一、二级指针 ---- 指针 作为 函数输入 : 调用者 负责 分配内存 ; 指针 作为 函数输出 : 函数 负责 分配内存 , 一般 传入二级指针 , 函数负责生成内存..., 并 使用 二级指针 指向 一级指针, 一级指针 指向 在 函数中 分配好内存 ; 如果要在 函数中 分配内存 , 则 需要 传入二级指针 , 在函数内部调用 malloc 函数 , 分配内存 ,...间接赋值 给 一级指针 *str2 = s2; return 0; } 二级指针 最终 指向的内存释放 : 释放二级指针 指向的 一级指针 指向的内存的地址 , 释放后 将指针指向的地址置空...return -1; } // 释放二级指针 指向的 一级指针 指向的内存的地址 // 释放指针 free(*str); // 将指针指向的地址置空...一级指针 , 只能释放一级指针指向的内存 * 不能 讲一级指针 置空 */ int free_str2(char *str) { // 判断传入的二级指针是否合法 if(str =

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

    C语言 | 指针由小到大输出3个整数

    例75:C语言输入3个整数,按由小到大的顺序输出。(要求用指针处理) 解题思路:读者要明白指针该怎么用,看着道题的时候,应该首先想到的是不用指针怎么交换,想明白这个思路,加上指针处理就好了。...C语言源代码演示: #include//头文件  int main()//主函数  {   void swap(int *p1,int *p2); //函数声明    int n1,n2...,n3;//定义整型变量    int *p1,*p2,*p3;//定义指针变量    printf("请输入3个整数:");//提示语句    scanf("%d %d %d",&n1,&n2,&n3...n3)   {     swap(p1,p3);   }   if(n2>n3)   {     swap(p2,p3);   }   printf("%d %d %d\n",n1,n2,n3);//输出排序后的结果...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言 | 指针由小到大输出3个整数 更多案例可以go公众号:C语言入门到精通

    1.6K22

    【C语言】指针(野指针)

    未初始化的指针变量就是“野”指针,它指向的是无效的地址。 有些书上说:“如果指针变量不初始化,那么它可能指向内存中的任何一个存储单元,这样就会很危险。...如果正好指向存储着重要数据的内存单元,而且又不小心向这个内存单元中写入了数据,把原来的重要数据给覆盖了,这样就会导致系统崩溃。”这种说法是不正确的!如果真是这样的话就是编译器的一个严重的 BUG!...:当你指针不知道怎么赋值,就赋值给一个空指针 NULL Null是在计算中具有保留的值,用于指示指针不引用有效对象。...程序通常使用空指针来表示条件,例如未知长度列表的结尾或未执行某些操作; 这种空指针的使用可以与可空类型和选项类型中的Nothing值进行比较。...空指针不应与未初始化的指针混淆:保证空指针与指向有效对象的任何指针进行比较。但是,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针。

    2.6K20

    C语言——指针

    平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结: 指针就是地址,口语中说的指针通常指的是指针变量。...( 编号=地址=指针 ) 那我们就可以这样理解: 内存 指针变量 我们可以通过 & (取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是指针变量...(这里取出的是四个字节,首字节的地址) //a变量占用4个字节的空间,这里是将a的4个字节的第一个字节的地址存放在p变量 中,p就是一个之指针变量。...return 0; } 总结: 指针变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。 那这里的问题是: 一个小的单元到底是多大?...对于二级指针的运算有: *ppa 通过对 ppa 中的地址进行解引用,这样找到的是 pa , *ppa 其实访问的就是 pa .

    8710

    C语言指针

    指向一级指针的指针就是二级指针。 2. 二级指针里面存放的是一级指针的地址。...NULL 是C语言中定义的⼀个标识符常量,值是0,地址也是0,这个地址是无法使用的,读写该地址会报错。所以在解引用之前,必须确保它不是一个NULL指针。 4. ...传址调用,可以让函数和主调函数之间建立真正的联系,在函数内部可以修改主调函数中的变量。 2. 如果函数中只是需要主调函数中的变量值来实现计算,就可以采用传值调用; 3....如果函数内部要修改主调函数中的变量的值,就需要传址调用。 传值调用 1. 实参传递给形参的时候,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实参。...将main函数中将a和b的地址传递给Swap函数,Swap 函数里边通过地址,间接操作main函数中的a和b,达到交换的效果。

    3800

    C语言——指针

    指针是c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说...指针是C语言的灵魂(doge) 由于通过地址能找到所需的变量单元,可以说,地址指向变量单元,打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008"指向"...p2 printf("a=%d,b=%d\n", a, b);//输出变量a和b的值 printf("*p1=%d,*p2=%d\n", *p1, *p2);...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制的C的10进制是12,所以q+1和q相差4  p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针的一些小结 如果能帮助友友们 -

    2.3K20

    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语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。...使用%p控制度输出变量的地址。 什么是指针:变量的地址叫做指针,指针就是地址,地址就是指针。 下面通过一张图可以更直观的理解内存中的地址 ? 内存中的地址演示图 2. 指针 指针是C语言的灵魂。...取出变量的地址,用&运算符 %p输出变量的地址。 变量的地址就叫做指针,我们可以使用一个指针变量来存储变量的地址。...指针变量后面可以使用中括号,在中括弧中写上下标来访问数据。...2 printf("%d\n",MaxValue(9, 13)); // 调用函数 printf("%p\n",MaxValue); // 输出函数的地址 return

    4.2K81

    【C语言】指针

    二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"的方式(以变量a为例):首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...("取出a的值:%d", value); 输出结果: ?...* 在第9行中,将v2的值赋值给了v1 ? * 在第10行中,将temp的值赋值给了v2 ?...* 如果我改一下第5行的代码,用一个本应该指向int类型变量的指针p,指向char类型的变量c int *p = &c; 我们再来看一下输出: ? ,c的原值是1,现在取出来却是513,怎么回事呢?

    3.3K60

    C语言:指针

    学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。...指针变量就是一种变量, 和其他种类的变量类似, 但指针和其他变量又有区别. 首先C语言作为一种类型语言, 每个变量都会有几个属性. 变量名称. 变量类型. 变量的值....Address stored in ip variable: bffd8b3c Value of *ip variable:20 类型 对于C语言来说, 搞清楚变量的类型相当重要, 涉及到指针的时候就更加重要...整个来说: next是一个指针, 指向一个函数, 函数的返回值也是一个指针, 指向一个类型为char的常量指针. C语言为类型语言, 即每个变量都有类型....= sizeof(*b); C 中的 NULL 指针 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

    2.7K20

    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函数,同时也是你第一个见得函数。...; return 是函数结束的关键字,返回值为0表示程序正确运行,为其他表示有其他异常 切记main函数不要void main(){},这个真的很重要 ❞ 3.2 指向函数的指针 见名知意,这个东西也是一个指针...num2); // 定义一个函数,有两个整型参数 funP = sum; // 将函数sum的地址给funP int ans = funP(1, 2); // 使用指针使用函数

    2K00

    C语言探秘:深度解析指针与数组的奇妙输出结果

    这些元素在内存中连续存储,并可以通过索引(通常是整数)快速访问。数组的概念不仅广泛应用于编程中的各个领域,如排序、搜索、动态规划等算法实现,也是理解更复杂数据结构(如链表、栈、队列和矩阵)的基础。...在实际应用中,数组的高效使用和优化往往涉及对存储空间的优化、时间复杂度的分析以及对特定编程语言中数组特性的深入理解。...在接下来的内容中,我们将深入探讨数组的基本概念、特性、操作以及在实际编程中的应用,旨在帮助读者更好地理解和掌握这一基础而强大的数据结构。...在编程世界的浩瀚宇宙中,指针如同一把双刃剑,既锋利无比,又需谨慎握持。...作为C、C++等编程语言的核心特性之一,指针提供了一种直接操作内存地址的能力,使得程序能够以更高效、更灵活的方式管理数据和资源。

    3800

    【C语言】C语言数组和指针

    ---- 友情提醒:本文可能是全csdn最详细的指针内容了,希望你能用心读下去 前言 接下来的讲解部分是指针的进阶,包含多种指针以及对应的数组,这部分章节对我们来说很重要,也是c语言中的重点模块儿,重要性不言而喻...(c/c++会把常量字符串储存到单独的一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)** 2.数组指针 2.1数组指针的定义 1.数组指针嘛...; } int main() { put(); void(*ps)() = put; return 0; } 我们阅读这段代码的方法其实可以类比,指针部分第二个数组指针中的方法。...,这个指针的类型是一个函数指针,指向的函数是一个返回类型为void,参数类型为const char 的一个函数,这个指针中存放了test函数的地址 代码2 首先pfunArr是一个数组,这个数组的大小是...其实就是你稍微拐了个弯儿,你把这个函数作为参数传递给一个Calc函数,然后Clac函数的参数被设计成为一个指向Add函数的函数指针,然后我们在Calc函数中,用接收Add函数的函数指针p(假设指针的名字是

    64.8K37

    C语言(指针)8

    qsort 是C语言中的一个库函数,使用 qsort 库函数需要包含头文件 。这个函数是用来对任意数据类型的数据排序的。...在回答这个问题之前,让我们的目光再回到上节我们写的冒泡排序中,先思考另一个问题,为什么我们写的冒泡排序只能排整形数据呢? 原因就在上面的红色方框中。...所以我们只需要改变上面红色方框中的代码,就可以实现对字符串排序了。...a和b的类型都是 void * 类型,而我们在之前的文章中说过 void * 类型的指针是不能直接进行解引用的。...在 C语言(指针)2 中我们说过这么两段话: 虽然void *类型的指针不能直接进行解引用操作,也不能 +- 整数的操作, 但是当我们不知道别人给我们传的地址是什么类型的时候,我们就可以放心地去用void

    8410

    C语言(指针)9

    在main函数中的p是一个结构体指针变量,指针p+1跳过20个字节,所以p的值应该+20,但是地址是16进制数,所以转换为16进制后p+1的值为0x100014;在第二个printf函数中将结构体指针p...“work”、“at”、“alibaba”等首字符的地址存到数组a中,再将数组首元素的地址赋给char **类型的指针变量pa中,pa++指向数组第二个元素,解引用就得到了数组内第二个字符串“at”首字符...首先来看第一个,++pcc使指针pcc指向了数组pc的第二个元素,解引用得到了第二个元素c+2,c+2也是一个指针,指向的是数组c的第三个元素,再解引用就得到了数组c的第三个元素也就是字符串“point...再来看第二个,首先算++pcc,因为之前pcc已经指向数组pc的第二个元素,所以这次++pcc使指针pcc指向了数组pc的第三个元素,解引用得到了第三个元素c+1,c+1再--变为c,c是数组名是其数组首元素的地址...pcc经过之前的两个自增运算已经指向了数组pc的第三个元素,此时-2指针pcc又重新指向了第一个元素,解引用得到c+3,c+3指向的是数组c的第四个元素,解引用得到字符串“first”首字符‘f’的地址

    6410

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券