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

C - 指针C语言指针总结

C语言指针总结 1. 变量 不同类型变量在内存中占据不同字节空间。 内存中存储数据最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制数。...下面通过一张图可以更直观理解内存中地址 ? 内存中地址演示图 2. 指针 指针C语言灵魂。指针变量占据8个字节。 变量在内存中存储。 变量值:存储在变量中数据,叫做变量值。...p操作是p这个指针变量,可以取p得值,也可以为p赋值 指针变量使用 可以使用指针间接操作指针指向变量。 *p 代表 p 指针指向变量。...指针作为函数参数 如果函数参数是一个指针,那么就必须要为这个指针传递一个和指针类型相同普通变量地址,这个时候,在函数内部去访问参数指针变量时候,其实访问就是实参变量 指针作为函数参数...存储指针数组 如果一个数组是用来存储指针类型数据的话,那么这个数组就叫做存储指针数组 格式 :元素类型 数组名[数组长度]; int * arr[3]; arr数组里面存储int指针数据,最多存储

4.2K81

C语言 | 指向指针指针

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

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

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

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

    1.7K32

    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语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"方式(以变量a为例):首先将变量a地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...如果程序通过"间接引用"方式来修改a值,可以这样做:先根据 变量名b 获取 变量b 地址ffc2,取出变量b中存储内容ffc1,也就是变量a地址,再根据变量a地址ffc1找到a存储空间,然后修改里面的数据...下面的写法是错误 int *p; p = 200; // 这是错误 回到顶部 四、指针运算符 1.给指针指向变量赋值 1 char a = 10; 2 printf("修改前,a值:%d\...下面的写法是错误 int *p; *p = 10; //这是错误 应该在指针变量指向一个确定变量后再进行赋值。

    3.3K60

    C语言_初识C语言指针

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

    19030

    C语言——指针

    指针c语言一个重要概念,也是C语言一个重要特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C精华也可以说...指针C语言灵魂(doge) 由于通过地址能找到所需变量单元,可以说,地址指向变量单元,打个比方,一个房间门口挂了一个房间号2008,这个2008就是房间地址,或者说,2008"指向"...野指针 概念:野指针就是指针指向位置是不可知,(随机性丶不正确丶没有明确限制) 野指针成因 1.指针未初始化 2.指针越界访问  如何避免野指针 1.指针初始化 2.小心指针越界...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制C10进制是12,所以q+1和q相差4  p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针一些小结 如果能帮助友友们 -

    2.3K20

    C语言: 指针

    目录 概念: 指针类型 指针解引用 野指针指针成因 空指针 指针与数组 指针在数组中使用: 二级指针 ---- 概念: 在计算机科学中,指针(Pointer)是编程语言一个对象,利用地址...指针类型与指向目标的类型一致,指针指向是目标的地址。...野指针 概念: 野指针就是指针指向位置是不可知(随机、不正确、没有明确限制指针变量 在定义时如果未初始化,其值是随机指针变量值是别的变量地址,意味着指针指向了一 个地址是不确定变量...3、指针空间释放掉了 那么,如何有效规避野指针呢?...0; } 指针指向是目标变量地址,那么二级指针指向就是指针地址。

    2K70

    C语言指针

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

    2.7K20

    C语言(失效指针

    曾经以为,C语言对我来说已经深入骨髓,所有语法细节早已烂熟于胸,直到我遇到了一道笔试题,一道丧心病狂笔试题,才渐渐明白,图样!图森破!哎我还是太年轻。。。...原题代码复杂,记不住,但考核关键语法点嘴脸如下: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100;...我们将源代码稍作修改: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100; p = &a;...要知道,p里面就存放了a地址,也就是说p本来就等于0xbfb4788,但是*p应该是p目标,也就是100,但为什么还是一个地址呢?...让指针p指向了a printf("p: %#x\n", p); // 将指针p存储地址以十六进制输出 printf("*p: %#x\n", *p); // 将指针p目标

    72320

    谈谈C语言指针

    C语言指针是啥? 举个栗子:新学期到了,小明正式开启了自己大学生活,他课表显示,今天上午十点,在教一204教室有一节计算机专业课。小明迫不及待来到教一,但他不知道教一204教室是哪间教室。...这个时候,他在教一门口看见了一个指路牌,上面就写着教一204教室具体位置,于是他直奔教一204教室开始上课。 上述栗子中提到 指路牌 顾名思义,就类似于C语言指针。...指针专业术语: 指针是一种编程语言对象,它是存储位于计算机内存中另一个值内存地址。...参考资料:《C++ Primer Plus》 我们在编写C语言代码时,当写下一个 int a; 计算机就会帮我们在内存中给这个a分配一个内存,当我们对a赋值6时,计算机就会满世界在内存中寻找这个a地址...下面我来引用一位大佬总结: ①全局变量是所有的函数外部定义变量,它作用域是整个程序,也就是所有的源文件,包括.c和.h文件,和函数模块化编程相违背,不利于程序修改、调试和移植。

    42820

    C语言指针进阶

    目录 指针进阶 前言 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组指针 8....回调函数 ---- 指针进阶 前言 上文简易指针中我们介绍了一些常见简单指针用法 链接:简单指针 这期,咱们来学习进阶版指针用法。 1....二维数组: 在用二维数组传参时候,和之前初始化时候一样,列数是一定要给,不然就是错误。 而 int *arr [ ] 错误原因是这是一个指针数组,里面的元素都是指针,所以肯定是错误。...甚至你可以用******都是可以。  6. 函数指针数组  一个数组中存放全是函数指针,那么这个数组就是函数指针数组。  上面代码可以看出。 为什么要把 [ ] 放在括号里面呢?...我们先拆解他 他首先是一个(*ppfarr),那么他性质是一个指针,然后外面是 [ ] 其次他性质是一个数组,然后再和外面的*结合,那么我们可以理解为,这是一个指针,指向一个数组,数组里面存放是函数指针

    60630

    C语言灵魂——指针

    你需要了解函数、循环、数组等C语言知识 ---- C语言灵魂——指针 1.指针基本介绍 ---- 计算机每一个字节都有一个地址。...---- 指针和字符数组 字符数组 在C语言中为了更高效操作字符串,我们需要理解一些事情, 我们如何把字符串存入和字符数组, 为了能够在字符数组中存储字符串,首要需求就是字符数组必须要足够大,大到能够容纳字符串...,字符数组大小要大于等于字符数量+1, C语言字符串必须以null结尾,这就是为什么我们需要一个额外空间,是用来存放null。...当二维数组数组B被当成指针时候,他里面是B [0] [0]地址,再对他进行解引用得到是对应值,1。...也可以看看我这篇笔记——C语言动态内存开辟 | 半生瓜のblog (doraemon2.xyz) ---- 相关函数: 堆上分配内存相关函数malloc calloc realloc 释放内存free

    93910

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

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

    2K00

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

    这是道哥第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针指针,很常用一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...,然后返回给main函数中pData指针。...执行do_malloc(&pData, 128); 把pData指针地址作为实参进行传递,因为pData本身就是一个指针,加上取地址符&,就是指针指针(二级指针),因此do_malloc函数第一个参数就要定义成...p此时是一个二级指针,参数赋值之后,p里面的内容就变成了pData这个指针变量地址,也就是说p指向了pData这个变量。...那么在p前面加上取值操作符*,就相当于是取出指针p中值,它里面的值就是pData!因此,malloc函数返回堆空间首地址,就相当于是赋值给了pData,如下图: ?

    2.1K20

    C语言指针)8

    qsort 是C语言一个库函数,使用 qsort 库函数需要包含头文件 。这个函数是用来对任意数据类型数据排序。...我们先来了解一下 qsort 函数用法: 以下图片均截自:C 标准库头文件 - cppreference.com ,更多详细内容请跳转查看。...在 C语言指针)2 中我们说过这么两段话: 虽然void *类型指针不能直接进行解引用操作,也不能 +- 整数操作, 但是当我们不知道别人给我们传地址是什么类型时候,我们就可以放心地去用void...其实细心朋友已经知道了,因为我们之前给出截图中已经有两行大字明确说明了这种写法风险,并且推荐了更加科学写法。...虽然第二种写法在现实中发生错误概率很小很小,但我们不能因为如此就放肆地使用这种写法,最后养成一种坏习惯。

    8410

    C语言指针)9

    但是要注意上面二维数组初始化,一般二维数组初始化是花括号里面包含花括号或没有括号,但上面的初始化中(0, 1)是一个逗号表达式,从左到右依次计算结果是最后一个表达式值,所以上面二维数组初始化后应该是这样...首先来看第一个,++pcc使指针pcc指向了数组pc第二个元素,解引用得到了第二个元素c+2,c+2也是一个指针,指向是数组c第三个元素,再解引用就得到了数组c第三个元素也就是字符串“point...再来看第二个,首先算++pcc,因为之前pcc已经指向数组pc第二个元素,所以这次++pcc使指针pcc指向了数组pc第三个元素,解引用得到了第三个元素c+1,c+1再--变为cc是数组名是其数组首元素地址...,解引用就得到了数组c第一个元素也就是字符串“enter”首字符‘e’地址,‘e’地址(指针)+3得到了第二个‘e’地址,用%s打印出“er”。...pcc经过之前两个自增运算已经指向了数组pc第三个元素,此时-2指针pcc又重新指向了第一个元素,解引用得到c+3,c+3指向是数组c第四个元素,解引用得到字符串“first”首字符‘f’地址

    6410
    领券