Solved

# Array pointer

Posted on 2008-06-22
218 Views
hi,

i hav an array like this:

char *arr[1000];

my problem is that i dont know the size at that time, i would know later where i would malloc it...

but when i do like this: char *arr[]; i get error:

is there a way to declre without putting size init

0
Question by:zizi21
• 5
• 3
• 3
• +1

LVL 13

Expert Comment

You could
int* arr;
int abc;
int size = 1000;
arr = malloc(1000 * sizeof(int));
and then reference it by subscript, as in
arr[0] = 7;
abc = arr[0];
0

LVL 84

Accepted Solution

ozo earned 200 total points
char **arr;
arr = (char **)malloc(1000*sizeof(char *));
0

LVL 11

Expert Comment

Do you need a pointer to a pointer? (An array is basically a pointer.) If so, go ozo:

char **arr2;
arr2 = (char **)malloc(1000*sizeof(char));

*arr2 = "There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy.";
printf("%c", (*arr2)[2]);

If not, josgood is good:

char* arr;
char abc;
char size = 1000;
arr = malloc(1000 * sizeof(char));
arr = "Now is the winter of our discontent.";
abc = arr[5];
0

Author Comment

hi , i need an array of pointers ..for example
arr[0]="this is";
arr[1]="another string";

0

LVL 13

Expert Comment

spoxox, its always a pleasure to meet someone who can quote from Richard III and Hamlet!
0

Author Comment

i have tried like this:

arr=(char **)calloc(1000,sizeof(char*));
and i get bus error...
or arr=(char **)malloc(1000*sizeof(char));
0

LVL 11

Expert Comment

;)
0

LVL 13

Assisted Solution

josgood earned 150 total points
You could do this...
char** arr;
arr = (char **)malloc(1000*sizeof(char));
arr[0] = "Twiddle Dee and Twiddle Dum\n";
arr[1] = "I've often believed as many as 6 impossible things before breakfast!\n";
printf(arr[0]);
printf(arr[1]);

(with nod to Ozo)
0

LVL 84

Expert Comment

where do you get bus error?
You must still initialize arr[0] before referencing arr[0]
0

LVL 11

Assisted Solution

spoxox earned 150 total points
OK, further with ozo:

``````char **arr2;

arr2 = (char **)malloc(1000*sizeof(char));

arr2[0] = "She should have died hereafter;";

arr2[1] = "There would have been a time for such a word.";

printf("%c", arr2[0][0]);  // S

printf("%c", arr2[1][0]);  // T
``````
0

Author Comment

thanks:-)
0

Author Closing Comment

thanks..i would post another question for bus error since it is not related...it works the other way..let me try with bus error...thanks
0

Author Comment

i am no longer getting bus error..thanks
0

## Featured Post

### Suggested Solutions

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ouâ€¦
Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were smallâ€¦
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.