#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void foo( const char ** const pointer )
{
const char *ptr = *pointer;
while(**pointer)
{
(*pointer)++;
}
*pointer = ptr;
}
void foo1( const char *const * pointer)
{
while(*pointer)
{
}
}
int main(void)
{
char **pointer
= malloc(sizeof(char *)); char **pointer1
= malloc(sizeof(char *) * 4);
char strings_in_RAM_0[] = "one";
char strings_in_RAM_1[] = "two";
char strings_in_RAM_2[] = "three";
pointer1[0] = strings_in_RAM_0;
pointer1[1] = strings_in_RAM_1;
pointer1[2] = strings_in_RAM_2;
pointer1[3] = NULL;
strcpy(*pointer
,"Const pointer to pointer");
foo(pointer);
foo1(pointer1);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdm9pZCBmb28oIGNvbnN0IGNoYXIgKiogY29uc3QgcG9pbnRlciApCnsKCWNvbnN0IGNoYXIgKnB0ciA9ICpwb2ludGVyOwogICAgd2hpbGUoKipwb2ludGVyKQogICAgewogICAgICAgIHByaW50ZigiJWMiLCAqKnBvaW50ZXIpOwogICAgICAgICgqcG9pbnRlcikrKzsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKICAgICpwb2ludGVyID0gcHRyOwp9Cgp2b2lkIGZvbzEoIGNvbnN0IGNoYXIgKmNvbnN0ICogcG9pbnRlcikKewogICAgd2hpbGUoKnBvaW50ZXIpCiAgICB7CiAgICAgICAgcHJpbnRmKCIlc1xuIiwgKnBvaW50ZXIrKyk7CiAgICB9Cn0KCgppbnQgbWFpbih2b2lkKSAKewogICAgY2hhciAqKnBvaW50ZXIgPSBtYWxsb2Moc2l6ZW9mKGNoYXIgKikpOwogICAgY2hhciAqKnBvaW50ZXIxID0gbWFsbG9jKHNpemVvZihjaGFyICopICogNCk7CgogICAgY2hhciBzdHJpbmdzX2luX1JBTV8wW10gPSAib25lIjsKICAgIGNoYXIgc3RyaW5nc19pbl9SQU1fMVtdID0gInR3byI7CiAgICBjaGFyIHN0cmluZ3NfaW5fUkFNXzJbXSA9ICJ0aHJlZSI7CgogICAgcG9pbnRlcjFbMF0gPSBzdHJpbmdzX2luX1JBTV8wOwogICAgcG9pbnRlcjFbMV0gPSBzdHJpbmdzX2luX1JBTV8xOwogICAgcG9pbnRlcjFbMl0gPSBzdHJpbmdzX2luX1JBTV8yOwogICAgcG9pbnRlcjFbM10gPSBOVUxMOwoKICAgICpwb2ludGVyID0gbWFsbG9jKDUwKTsKCiAgICBzdHJjcHkoKnBvaW50ZXIsIkNvbnN0IHBvaW50ZXIgdG8gcG9pbnRlciIpOwoKICAgIGZvbyhwb2ludGVyKTsKICAgIGZvbzEocG9pbnRlcjEpOwoKICAgIGZyZWUoKnBvaW50ZXIpOwogICAgZnJlZShwb2ludGVyKTsKICAgIGZyZWUocG9pbnRlcjEpOwoKICAgIHJldHVybiAwOwp9