tags:

views:

40

answers:

2

is there any difference between an array of char pointers and a pointer to a char pointer?

+1  A: 

http://c-faq.com/aryptr/aryptr2.html

It's not the same, since it compares a char array to a pointer to a char, but the principle is the same -- just replace the letters in the illustration with pointers.

Heinzi
A: 

Yes, there are differences between an array of things and a pointer to a thing, but they usually disappear under certain circumstances.

When you pass an array to a function (for example), that degrades to a pointer to the first element in that array.

An example:

#include <stdio.h>

static void func (char arr[], char *parr) {
    printf ("in func: %3d %3d\n", sizeof(arr), sizeof (parr));
}
int main (void) {
    char arr[100], *parr = arr;
    printf ("         arr ptr\n");
    printf ("         --- ---\n");
    printf ("in main: %3d %3d\n", sizeof(arr), sizeof (parr));
    func (arr, parr);
    return 0;
}

This outputs:

         arr ptr
         --- ---
in main: 100   4
in func:   4   4

This usually annoys people no end since you can't get the size of an "array" passed to a function (you only get the size of what was passed, which is a pointer). If you want the actual size, you have to pass it along as well:

int array[100];
doSomethingWith (array, sizeof (array));
paxdiablo