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

C语言函数传递指针理解以及二重指针使用

C语言函数传递指针理解 传递参数时会生成一个复制指针,该指针指向位置与 原指针指向位置相同; 即b自身在计算机地址与a地址不是相同,这时你在函数体内修改a指向位置,一定不会修改b指向位置...如下面这个方法 void test(int *a){ int l=2; a=&l; } 此时 修改之后 那么想要修改b指向怎么办,很简单,就是将b在计算机存储地址传递过来,那么怎么传递呢...,这时候就要使用双重指针了,修改为下面的方法 void test(int **p){ int l=2; // *p代表b指针地址指向内容,就是b指针存储内容,也就是1地址...*p=&l; } main方法 int *b=(int *)malloc(sizeof(int)); *b=1; //传递b指针地址 test(&b); printf("%d",*b); } 此时传递过程...此时p2存储就是b指针地址,*p2指向就是b指针单元,这时候修改*p2内容就是修改外部b指针指向内容

21510

C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )

文章目录 总结 一、直接定义 数组指针 二、完整代码示例 总结 int (*p)[3] = NULL; 一、直接定义 数组指针 ---- 直接定义 数组指针 , 首先 , 定义一个普通数组 ,...之后 数组指针 指向该数组 , int array2[3] = {0}; 然后 , 直接定义数组类型变量 , int (*p)[3] = NULL; 最后 , 将 array2 变量地址赋值给该...数组指针类型 变量 , 指针指向数据类型为 int[3] 数组类型变量 array2 ; ArrayPointer p = NULL; p = &array2; 验证上述 定义数组指针..., 之后 数组指针 指向该数组 int array2[3] = {0}; // 然后 , 直接定义数组类型变量 int (*p)[3] = NULL; // 最后..., 将 array2 变量地址赋值给该 数组指针类型 变量 // 指针指向数据类型为 int[3] 数组类型变量 array2 p = &array2; // 为数组赋值

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

    C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组指针类型 定义数组指针 )

    文章目录 总结 一、使用 数组指针类型 定义数组指针 二、完整代码示例 总结 // 首先 , 定义 数组指针类型 别名 typedef int(*ArrayPointer)[3];...// 然后 , 声明一个 数组指针类型 变量 ArrayPointer p = NULL; 一、使用 数组指针类型 定义数组指针 ---- 使用 数组指针类型 定义数组指针 , 首先 , 使用...typedef 定义一个数组指针类型 , typedef int(*ArrayPointer)[3]; 然后 , 定义一个普通数组 , 之后 数组指针 指向该数组 , int array2...ArrayPointer p = NULL; p = &array2; 验证上述 定义数组指针 : 为 数组元素 赋值 , // 为数组赋值 int i = 0; for...// 首先 , 定义 数组指针类型 别名 typedef int(*ArrayPointer)[3]; // 然后 , 定义一个普通数组 , 之后 数组指针 指向该数组

    3K10

    C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )

    * 定义数组指针 ---- 数组类型指针 就是 定义一个指针 , 指向数组首地址 ; 使用 数组类型* 定义数组指针 , 首先 , 定义数组类型 别名 , typedef int(ArrayType...)[3]; 然后 , 使用别名类型 , 声明数组变量 , ArrayType array2 = {0}; 最后 , 声明一个指针 , 将 array2 变量地址赋值给该指针 , 指针指向数据类型为...int[3] 数组类型变量 array2 ; ArrayType *p = NULL; p = &array2; 验证上述 定义数组指针 : 为 数组元素 赋值 , //...char *array = {"12", "ab", "34"}; // 数组指针 , 使用指针变量指向数组 // 使用 数组别名 定义数组指针 // 首先 ,...// 最后 , 声明一个指针 , 将 array2 变量地址赋值给该指针 // 指针指向数据类型为 int[3] 数组类型变量 array2 ArrayType *p = NULL;

    3.4K20

    C - 指针C语言指针总结

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

    4.2K81

    C语言-一维指针定义与使用

    前言 指针在很多书本上都是当做重点来介绍,作为C语言灵魂,项目里指针无处不在。...指针在嵌入式、单片机里使用最直观,可以直接通过指针访问寄存器地址,对寄存器进行配置;计算机CPU、外设硬件都是依靠地址操作。 2. 指针变量如何定义?...数组指针 数组指针可以指向一个一维数组,行指针也叫一维数组指针定义语法:char (*p)[5]; 该指针指向一个二维数组里一个一维数组地址,一维数组成员是5个字节。...指针数组 指针数组: 表示该数组成员可以存放指针指针数组定义语法:int *p[5];表示定义一个int数组,该数组类型可以存放5个int类型指针变量(地址)。...#include #include int main() { int a,b,c; int *p[3]; //一次定义3个int类型指针变量 //存放地址

    27130

    C语言 | 指向指针指针

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

    3K32

    C语言指针(野指针)

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

    2.6K20

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

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

    1.7K32

    C语言: 指针

    目录 概念: 指针类型 指针解引用 野指针指针成因 空指针 指针与数组 指针在数组中使用: 二级指针 ---- 概念: 在计算机科学中,指针(Pointer)是编程语言一个对象,利用地址...*pf = NULL; double *pd = NULL; 指针定义方式为:类型+*+名称。...指针类型与指向目标的类型一致,指针指向是目标的地址。...野指针 概念: 野指针就是指针指向位置是不可知(随机、不正确、没有明确限制指针变量 在定义时如果未初始化,其值是随机指针变量值是别的变量地址,意味着指针指向了一 个地址是不确定变量...0; } 指针指向是目标变量地址,那么二级指针指向就是指针地址。

    2K70

    C语言指针

    学习 C 语言指针既简单又有趣。通过指针,可以简化一些 C 编程任务执行,还有一些任务,如动态内存分配,没有指针是无法执行。所以,想要成为一名优秀 C 程序员,学习指针是很有必要。...指针变量就是一种变量, 和其他种类变量类似, 但指针和其他变量又有区别. 首先C语言作为一种类型语言, 每个变量都会有几个属性. 变量名称. 变量类型. 变量值....Address stored in ip variable: bffd8b3c Value of *ip variable:20 类型 对于C语言来说, 搞清楚变量类型相当重要, 涉及到指针时候就更加重要...这个声明/定义比较复杂, 日常编程可能就会碰到比较 复杂情况, 所以要搞清楚指针首先要懂得怎么看一个声明/定义变量类型. 如果看到一个变量声明或者定义, 那么就需要弄明白变量类型....整个来说: next是一个指针, 指向一个函数, 函数返回值也是一个指针, 指向一个类型为char常量指针. C语言为类型语言, 即每个变量都有类型.

    2.7K20

    C语言——指针

    指针c语言一个重要概念,也是C语言一个重要特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C精华也可以说...指针C语言灵魂(doge) 由于通过地址能找到所需变量单元,可以说,地址指向变量单元,打个比方,一个房间门口挂了一个房间号2008,这个2008就是房间地址,或者说,2008"指向"...p2; //定义指向整型数据指针变量p1,p2; p1 = &a; //把变量a地址赋给指针变量p1 p2 = &b; //把变量a地址赋给指针变量...程序第五第六行作用就是使p1指向a,使p2指向b,此时p1值为&a(即a地址),p2值为&b(即为b地址) *注意:定义指针变量时,左侧应有类型名,否则就不是定义指针变量....16进制C10进制是12,所以q+1和q相差4  p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针一些小结 如果能帮助友友们 -

    2.3K20

    C语言指针

    二、指针定义 三、指针初始化 四、指针运算符 五、指针用途举例 六、关于指针疑问 指针C语言中非常重要数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"方式(以变量a为例):首先将变量a地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a...,而且只能指向这种类型变量 回到顶部 三、指针初始化 1.先定义后初始化 1 // 定义int类型变量a 2 int a = 10; 3 4 // 定义一个指针变量p 5 int *p; 6...* 看下面的代码,利用指针p读取变量c值 1 int i = 2; 2 char c = 1; 3 4 // 定义一个指向char类型指针 5 char *p = &c; 6 7 // 取出 8...这个要根据内存来分析 根据变量定义顺序,这些变量在内存中大致如下图排布: 其中,指针变量p和int类型变量i各占2个字节,char类型c占一个字节,p指向c,因此p值就是c地址 ?

    3.3K60

    C语言_初识C语言指针

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

    19030

    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指向了a printf("p: %#x\n", p); // 将指针p存储地址以十六进制输出 printf("*p: %#x\n", *p); // 将指针p目标

    72320

    C语言灵魂——指针

    你需要了解函数、循环、数组等C语言知识 ---- C语言灵魂——指针 1.指针基本介绍 ---- 计算机每一个字节都有一个地址。...#include int main(void) { int a = 10;//定义一个整型变零a int* p;//定义一个指针变量p p = &a; return...---- 指针和字符数组 字符数组 在C语言中为了更高效操作字符串,我们需要理解一些事情, 我们如何把字符串存入和字符数组, 为了能够在字符数组中存储字符串,首要需求就是字符数组必须要足够大,大到能够容纳字符串...,字符数组大小要大于等于字符数量+1, C语言字符串必须以null结尾,这就是为什么我们需要一个额外空间,是用来存放null。...(定义多维数组指针时候,后面的参数是该数组除去一个参数几个参数) 多维数组-例如:三维数组就是二维数组数组。

    93910
    领券