Solved

Array pointer

Posted on 2008-06-22
13
222 Views
Last Modified: 2010-04-21
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
Comment
Question by:zizi21
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
  • 3
  • +1
13 Comments
 
LVL 13

Expert Comment

by:josgood
ID: 21842757
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

by:
ozo earned 200 total points
ID: 21842759
char **arr;
arr = (char **)malloc(1000*sizeof(char *));
0
 
LVL 11

Expert Comment

by:spoxox
ID: 21842852
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

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


0
 
LVL 13

Expert Comment

by:josgood
ID: 21842872
spoxox, its always a pleasure to meet someone who can quote from Richard III and Hamlet!
0
 

Author Comment

by:zizi21
ID: 21842877
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

by:spoxox
ID: 21842881
;)
0
 
LVL 13

Assisted Solution

by:josgood
josgood earned 150 total points
ID: 21842889
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

by:ozo
ID: 21842894
where do you get bus error?
You must still initialize arr[0] before referencing arr[0]
0
 
LVL 11

Assisted Solution

by:spoxox
spoxox earned 150 total points
ID: 21842900
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

Open in new window

0
 

Author Comment

by:zizi21
ID: 21842912
thanks:-)
0
 

Author Closing Comment

by:zizi21
ID: 31469609
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

by:zizi21
ID: 21842955
i am no longer getting bus error..thanks
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
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 opening and reading files in the C programming language.

710 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question