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

值传递 vs. 指针传递

值传递还是指针传递? 变量赋值有两种方式:值传递、"指针"传递(指针也常称为"引用")。不同的编程语言赋值的方式不一样,例如Python是"指针"传递的,Go是值传递的。...注意,"指针"加了引号,因为它不是真正的指针拷贝,见下文分析。 参数传值其实也是变量赋值的过程,只不过参数是函数的本地变量而已。...总之,"指针"传递时,由于只拷贝一份能表示数据对象的属性(比如地址),拷贝的内容非常少,速度非常快。...对于那些不支持操作指针的语言,通常会将"指针"传递称为"浅拷贝(shallow copy)",然后额外提供一个函数或工具实现指传递,这称为"深拷贝(deep copy)"。...另一方面,上面的"指针传递"并非是真正的指针传递,而是引用传递,或者说是地址传递。这就是前文"指针传递"中的"指针"都加上了引号的原因。

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

    1177: 要求排序(指针专题)

    输入n和n个整数,然后要求排序,若输入1,请输出升序排序序列;若输入2,请输出降序排序序列,若输入3,请输出绝对值升序排序序列。要求程序结构如下,请完善程序。...void sort(int a[], int n, int (*cmp)()); int CmpAsc(int x, int y); /*升序要求判断两元素是否逆序*/ int CmpDec(int...x, int y); /*降序要求判断两元素是否逆序*/ int CmpAbsAsc(int x, int y);  /*绝对值升序要求判断两元素是否逆序*/ int main(void)...若用户的排序选择是1,则输出升序排序后的n个整数;若用户的排序选择是2,则输出降序排序后的n个整数;若用户的排序选择是3,则输出绝对值升序排序后的n个整数;输出占一行,数据之间用空格隔开。...*/ int CmpDec(int x, int y); /*降序要求判断两元素是否逆序*/ int CmpAbsAsc(int x, int y); /*绝 对值升序要求判断两元素是否逆序*/

    57030

    字符指针字符串

    字符指针字符串 C语言把字符串存放在字符数组中,通过数组名可以访问字符串字符串中的某个字符。实际上,使用字符型指针(简称字符指针)可以更加灵活和方便地使用字符串。...使用字符指针访问字符串时,需要把字符串的地址(第1个字符的地址)存放到字符指针变量中,可以使用如下两种方式: (1)字符指针变量的初始化方式。...1个字符的地址存放到指针变量中,此时称字符指针指向了一个字符串。...使用字符指针变量指向字符串后,程序中使用时,既可以用指针的间接访问方式逐个访问字符串中的数组;也可以把字符串作为一个整体,使用字符串处理函数对字符串进行各种操作。 例:阅读下面程序。...由于字符指针变量仅是保存一个字符串的首地址,并没有内存空间存放整个字符串,所以不能直接使用字符串的输入或复制函数把字符串存储到字符指针变量中。

    34110

    C语言字符串指针

    \n"); return 0; } 运行结果: http://c.biancheng.net http://c.biancheng.net 字符数组归根结底还是一个数组,上节讲到的关于指针和数组的规则同样也适用于字符数组...更改上面的代码,使用指针的方式来输出字符串: #include #include int main(){ char str[] = "http://c.biancheng.net...,就是直接使用一个指针指向字符串,例如: char *str = "http://c.biancheng.net"; 或者: char *str; str = "http://c.biancheng.net...第4行代码是正确的,可以更改指针变量本身的指向;第5行代码是错误的,不能修改字符串中的字符。...到底使用字符数组还是字符串常量 在编程过程中如果只涉及到对字符串的读取,那么字符数组和字符串常量都能够满足要求;如果有写入(修改)操作,那么只能使用字符数组,不能使用字符串常量。

    6.1K20

    字符串比较(指针参数)

    题目描述 编写一个函数比较两个字符串,参数是两个字符指针(要求显式定义,例如char *S, char *T),比较字符串S和T的大小。...比较规则: 1.把两个字符串的相同位置上的字符进行比较,字符的大小比较以ASCII值为准 2.在比较中,如果字符串S的字符大于字符串T的字符的数量超过小于的数量,则认为S大于T,如果等于则S等于T,如果小于则...S小于T 例如S为aaccdd,T为eebbbb,每个位置比较得到S前两个字母都小于T,但后4个字母都大于T,最终认为S大于T 3.如果两个字符串长度不同,则更长的字符串为大 在主函数中输入两个字符串,...并调用该函数进行判断,在判断函数中必须使用函数参数的指针进行字符比较 输入 输入t表示有t个测试实例 接着每两行输入两个字符串 依次输入t个实例 输出 每行输出一个实例的比较结果 输入样例1 3 aaccdd

    20010

    【重拾C语言】七、指针(三)指针字符串字符串字符串数组;指针字符串的遍历、拷贝、比较;反转字符串

    使用指针可以更灵活地处理字符串,因为指针可以指向字符串的起始位置,并通过指针运算来访问字符串中的字符。...使用指针来遍历字符串中的字符; 使用指针进行字符串的拷贝、连接和比较等操作; 指针还可以用于动态分配内存以存储字符串,这样可以根据需要调整字符串的长度。...7.5.2 指针字符串 通过使用指针,可以更加灵活地操作和处理字符串指针的优势在于可以直接访问字符串中的字符,而不需要通过数组索引来访问。 a....字符串常量是以字符数组的形式存储的,因此可以使用指针来访问其中的字符。 b. 指针字符串的遍历 使用指针可以遍历字符串中的每个字符。...通过逐个复制源字符串中的字符到目标字符串,并递增源指针和目标指针,最后在目标字符串末尾添加结束标志 '\0',完成字符串拷贝。

    14610

    【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    字符串函数 长度受限制 情况 ( 1 ) 受限制的字符串函数 ( 推荐使用 降低错误率 ) 五. 指针数组 与 数组指针 1....char*指针 : (char*) (*((unsigned int*)p)) 即指向字符串指针, 打印这个指针会将字符串打印出来 printf("*p = %s\n", (char*) (*((unsigned...1.字符串常用方式 : 一般在函数中使用字符串时, 需要指明字符串的大小, 因为字符串数组 一旦当做函数参数时, 就退化成指针, 失去了大小信息 ; 2.字符串相关的函数不需要大小信息 : 在 string.h...遍历指针数组中指向的每个字符串, 与传入的 key 进行对比, 如果相等, 那么返回字符串指针数组的索引 // ( 1 ) 对比函数 : 注意 strcmp 函数, 对比两个字符串, 如果相等 则..., 这是一个数组指针, 数组中每个元素都是指向一个字符串指针 ; ( 3 ) char env[] 参数* : 环境变量数组, 这是一个数组指针, 数组中每个元素都是指向一个字符串指针 ; 这个环境变量

    3.7K30

    8.4 通过指针引用字符串

    3、用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。 4、通过字符数组名或字符指针变量可以输出一个字符串,而对一个数值型数组,是不能企图用数组名输出它的全部元素的。...02 字符指针作函数参数 1、如果想把一个字符串从一个函数“传递”到另一函数,可以用地址传递的方法,即用字符数组名作参数,也可以用字符指针变量作参数。...03 使用字符指针变量和字符数组的比较 1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),绝不是将字符串放到字符指针变量中。 2、赋值方式。...5、指针变量的值是可以改变的,而数组名代表一个固定的值(数组首元素地址),不能改变。 6、字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容时不可以被取代的。 7、引用数组元素。...8、用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串。 有时候,正是那些意想不到之人,成就了无人能成之事。

    5133129

    7.3 通过指针引用字符串

    一、字符串的引用方式 在C语言中,字符串是存放在字符数组中的。...有两种方法可以引用 ①用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串 ②用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量...二、字符指针做函数参数 如果把一个字符串从一个函数“传递”到另一个函数,可以用地址传递的办法,即用字符数组名作参数,也可以用字符指针变量作参数 三、使用字符指针变量和字符数组的比较 (1)字符数组由若干个元素组成...,每个元素中放一个字符,而字符指针变量中存放的是地 址,绝不是将字符串放到字符指针变量中 (2)可以对字符指针变量赋值,但绝不能对数组名赋值 (3)对字符指针变量赋初值 (4)编译时为字符数组分配入若干存储单元...,以存放个元素的值,而对字符指针变量,只分 配一个存储单元 (5)指针变量的值是可以改变的,而数组名代表一个固定的值,不能gaib

    5213129

    C语言 | 指针引用字符串

    用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。 通过字符数组名或字符指针变量可以输出一个字符串,而对一个数值型数组,是不能企图用数组名输出它的全部元素的。...C语言字符指针作函数参数 如果想把一个字符串从一个函数“传递”到另一函数,可以用地址传递的方法,即用字符数组名作参数,也可以用字符指针变量作参数。...C语言使用字符指针变量和字符数组的比较 字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第1个字符的地址),绝不是将字符串放到字符指针变量中。...字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容时不可以被取代的。 引用数组元素。对字符数组可以用下标法引用一个数组元素,也可以用地址法。...用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串

    1.3K40
    领券