-
Notifications
You must be signed in to change notification settings - Fork 0
/
ej5-2_swap.c
121 lines (111 loc) · 3.3 KB
/
ej5-2_swap.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
* Archivo / @File: ej5-2_swap.c
*
* Fecha / @Date: Jueves 11 de Agosto de 2022 / Thursday August 11, 2022
*
* Última Modificación / Last Modification: Jueves 11 de Agosto de 2022 / Thursday August 11, 2022
*
* Autor / @Author: Ezequiel Hernán Villanueva
*
*
* [ Spanish ]
*
* 5.2 Apuntadores y argumentos de funciones
* Puesto que C pasa los argumentos de funciones por valor, no existe una forma
* directa para que la función que se invoca altere una variable de la función que la llama.
* Por ejemplo una rutina de ordenamiento para intercambiar dos elementos desordenados con una función
* swap. No es suficiente escribir
*
* swap( a, b);
*
* donde la función swap está definida como
*
* void swap(int x, int y) // INCORRECTO
* {
* int temp;
*
* temp = x;
* x = y;
* y = temp;
* }
*
* Debido a la llamada por valor, swap no puede afectar los argumentos a y b que está en la rutina que la llamó.
* La función anterior solo intercambia copias de a y de b.
* La forma de obtener los resultados que se desean es que el programa invocador pase apuntadores a los valores que se cambiarán
*
* swap ( &a , &b );
*
* Puesto que el operador & produce la dirección de una variable, &a es un apuntador a a.
* Dentro de la misma función swap, los parámetros se declaran para ser apuntadores, y
* se tiene acceso a los operandos indirectamente a través de ellos.
*
*
*
*
*
*
* [ English ]
*
* 4.3 Externals variables
* ...
*
*
*
*
*
* Some source code files with examples from The Book
* "The C Language Programming, Second Edition
* By Brian W. Kernighan & Dennis M. Ritchie"
* a Compiled Programming Language.
* Use "gcc - GNU project C and C++ compiler"
* for various GNU\Linux based Operative Systems.
*
* Edited a little time ago!
*
* You can Copy / Edit / Change / Distribute
* GNU GPL License Software Version 3.0
*
* For Educational Purpose.
*
*/
#include <stdio.h>
//#include <string.h>
//#include <limits.h>
//#include <float.h>
#include <math.h> // para atof
#include <string.h>
#include <ctype.h>
// Declaración de CONSTANTES SIMBÓLICAS para evitar LOS NÚMEROS MÁGICOS
// Declaration of SYMBOLIC CONSTANTS for avoid THE MAGICS NUMBERS
#define MAXLINE 1000
/*
* Tamaño máximo de la línea de entrada
* "tanto texto como sea posible"
* para un int de 16 bits el rango de valores es [ -32768, +32767 ] pag. 10
*
* Maximun length of input textline
* "as much text as possible"
* for a 16-bit int the range of values is [-32768, +32767] p. 10
*/
#define MAXOP 100 // Máximo tamaño de operando u operador
#define NUMBER '0' // señal de que un número se encontró
#define MAXVAL 100 // máxima profundidad de la pila val
#define BUFSIZE 100
/*
* Definición de la función: swap(int *px, int * py)
*
* Intercambia dos elementos pasdos por referencia usando apuntadores
*/
void swap( int *px, int *py )
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
// Programa Principal
// Main Program
int main( int c, char * argv[] )
{
return 0;
}