示例程序,swap_1和swap_2都是错误的,推理从1开始推到2,2没完成,推到3就完成了
# include <stdio.h> void swap_1(int, int); void swap_2(int *, int *); void swap_3(int *, int *); int main(void) { int a = 3; int b = 5; //swap_1(a, b); //这是错误的 //swap_2(&a, &b); // swap_2(*p, *q); 是错误的 swap_2(a, b); 也是错误的 swap_3(&a, &b); //OK printf("a = %d, b = %d\n", a, b); return 0; } //不能完成互换功能 void swap_1(int a, int b) //没有接收主函数的变量地址,这个a和b和主函数的a,b不是一个值,所以这里无论怎么改变,主函数都不变 { int t; t = a; a = b; b = t; return; } //虽然p接收了a的地址,q接收了b的地址,但是很可惜,你改变的是p和q的值,没有修改*p和*q的值,还是无法修改主函数的值 void swap_2(int * p, int * q) //这里的参数接受的变量是p和q,int * 表示接受参数的类型,也就是说应该接受地址 { int * t; //如果要互换p和q的值,则t必须是int *, 不能是int, 否则会出错 t = p; p = q; q = t; } //可以完成互换功能,改变了两个值,改变了a和b的值 void swap_3(int *p, int *q) { int t; //如果要互换*p和*q的值, 则t必须定义成int, 不能定义成int *, 否则语法出错 t = *p; // p是int *, *p 是int, *p是代表以p为地址代表的那个内容 *p = *q; // *p 刚好是a, *q刚好是b *q = t; }
相关推荐
同样,比较两个数组的内容也不能简单地使用`==`运算符,而应使用`strcmp`或其他适当的库函数。 ### 二、数组名的本质 #### 2.1 数组名指代一种数据结构:数组 数组名实际上是指向一种特定数据结构的引用,即数组...
}`,这个函数通过交换两个指针所指向的值实现了两个整数的互换。 六、多级指针 多级指针是指指针本身就是一个指针变量,它可以指向另一个指针。在UNIT 13 多级指针——指针进阶篇中,可能会详细介绍如何使用二级或...
}`,这个函数通过交换两个指针所指向的值实现了两个整数的互换。 六、多级指针 C语言还支持多级指针,如`int **pp`是一个指向指针的指针。多级指针可以用来间接访问和操作内存中的数据,尤其是在处理嵌套数据结构...
指针有两个主要特点。首先,指针变量的值是内存地址,通过这个地址可以读写对应的内存单元。其次,指针的类型决定了从指定位置访问数据的大小和方式。例如,将`int *`转换为`char *`,不会改变地址本身,但会影响...
【C语言指针详解】 C语言中的指针是其强大特性的核心之一,它允许程序员直接操作内存,实现高效的数据处理和复杂的程序设计。指针是存放内存地址的变量,可以用来间接访问和修改内存中的数据。理解指针是学习C语言...
【C语言经典程序】是学习C语言过程中常常参考和练习的源代码集合,涵盖了C语言的基础概念和技术,如指针、数组、循环以及文件操作。这些程序有助于初学者理解和掌握C语言的核心特性。 1. **9*9乘法口诀表**:这是一...
例如`void swap(int *a, int *b)`函数可以通过交换`a`和`b`的值来交换两个变量的值。 7. **指针的多级指针** 可以声明二级甚至多级指针,如`int **pp`,它可以指向一个指针变量,间接指向一个整型变量。 8. **...
例如,`void swap(int *a, int *b)`函数可以交换两个整数的值。 2. 函数返回:函数也可以返回指针,这常用于动态内存分配或返回结构体等复杂数据类型的场景。 四、多级指针 多级指针是指指向指针的指针,例如`int *...
通过分析一系列精选的C语言指针相关习题,我们可以更深入地了解指针的各种应用场景以及其中的技巧。 首先,让我们探讨如何通过指针交换两个变量的值。在C语言中,函数参数默认是按值传递的,这意味着函数内对参数的...
6. **127_指针7_经典指针程序_互换两个数字**:展示了如何使用指针交换两个变量的值,这是指针实际应用的一个典型例子,展示了指针的灵活性和效率。 7. **128_指针8_星号的三种含义**:解释了星号`*`在C语言中的...
例如,`void swap(int *a, int *b)`函数可以交换两个整数的值,而无需创建新的整数变量。 ```c int x = 1, y = 2; swap(&x, &y); // x和y的值互换 ``` **指针函数** 指针函数是指返回值或参数中包含指针的函数。...
在C语言中,指针是程序设计中的一个重要概念,它允许程序员直接操作内存地址,从而实现更高效和灵活的编程。本课件主要探讨了C语言中的指针使用及其相关概念,适合初学者掌握。 首先,我们要理解变量与地址的关系。...
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复进行的,直到没有再需要交换,也就是说该数列已经排序完成。 - 在这段代码中,`maopao` 函数实现了从大...
`swap`函数接受两个整数指针`p1`和`p2`作为参数,通过临时变量`temp`,首先存储`p1`指向的值,然后将`p2`指向的值赋给`p1`,最后将`temp`的值赋给`p2`,从而实现了两个实参变量的值的交换。 【指针的传递】在【例7-...
例3中,程序从用户那里接收两个整数,调用`max`函数找到最大值,然后将结果输出。`max`函数接受两个整数参数,比较它们并返回较大值。 这些例子直观地展示了C语言的基本结构和功能,包括变量定义、输入/输出操作、...
反转字符串的传统方法是使用一个临时变量,将字符串的第一个字符与最后一个字符互换,然后依次向前移动,直到两个指针相遇。但是,双指针法可以避免使用额外的临时变量,直接交换相对位置的字符。 双指针反转字符串...
书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...
综上所述,这个C语言指针进阶的课件深入探讨了指针数组和二级指针的概念及其应用,有助于提升对C语言指针的理解和使用能力,对于编写高效、灵活的C程序至关重要。通过学习这些内容,开发者能够更好地掌控内存管理和...