A
arnuld
Its just a very simple and basic program to learn exactly what is
described in comments here. Can you provide a better (and short)
exercise ?
/* A program to learn how to use a pointer to a pointer. Here we take an
array of char pointers. A char* in the array, of course, points
* to some char. Array has only one element. We change the value of char
pointed by array's element using a function.
*
* VERSION 0.0
*/
#include <stdio.h>
void replace_char_value(char* [], char);
int main(void)
{
char* arrc[2] = {0};
char c = 'c';
arrc[0] = &c;
printf("*arrc: %p, **arrc: %c\n", (void*)*arrc, **arrc);
replace_char_value(arrc, 'w');
printf("*arrc: %p, **arrc: %c\n", (void*)*arrc, **arrc);
return 0;
}
void replace_char_value(char* arr[], const char t)
{
**arr = t;
}
==================== OUTPUT =======================
[arnuld@dune programs]$ gcc -ansi -pedantic -Wall -Wextra pointer-to-
pointer.c
[arnuld@dune programs]$ ./a.out
*arrc: 0xbfffe8ab, **arrc: c
*arrc: 0xbfffe8ab, **arrc: w
[arnuld@dune programs]$
described in comments here. Can you provide a better (and short)
exercise ?
/* A program to learn how to use a pointer to a pointer. Here we take an
array of char pointers. A char* in the array, of course, points
* to some char. Array has only one element. We change the value of char
pointed by array's element using a function.
*
* VERSION 0.0
*/
#include <stdio.h>
void replace_char_value(char* [], char);
int main(void)
{
char* arrc[2] = {0};
char c = 'c';
arrc[0] = &c;
printf("*arrc: %p, **arrc: %c\n", (void*)*arrc, **arrc);
replace_char_value(arrc, 'w');
printf("*arrc: %p, **arrc: %c\n", (void*)*arrc, **arrc);
return 0;
}
void replace_char_value(char* arr[], const char t)
{
**arr = t;
}
==================== OUTPUT =======================
[arnuld@dune programs]$ gcc -ansi -pedantic -Wall -Wextra pointer-to-
pointer.c
[arnuld@dune programs]$ ./a.out
*arrc: 0xbfffe8ab, **arrc: c
*arrc: 0xbfffe8ab, **arrc: w
[arnuld@dune programs]$