Solved

dynamic array

Posted on 2002-07-15
9
209 Views
Last Modified: 2012-05-04
How to create a dynamic array, with the array size is determine by user input?
Pls give a simple example.Thanx you.
0
Comment
Question by:exiang
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 84

Accepted Solution

by:
ozo earned 50 total points
Comment Utility
#include <stdio.h>
main(){
    int arraysize;
    int *array;
    int i;
    scanf("%d",&arraysize);
    array = (int *)malloc(sizeof(*array)*arraysize);
    for( i=0; i<arraysize; i++ ){
          scanf("%d",&array[i]);
    }
    for( i=0; i<arraysize; i++ ){
          printf("%d\n",array[i]);
    }
}
0
 
LVL 3

Expert Comment

by:cincin77
Comment Utility
int he malloc line;
instead of using sizeof(* array) you should use sizeof(int)
as the elements of the array are integers. However for this specifiz example, sizeof(* array) should be equal to 4 which is equal to sizeo(int) :))

regards...
0
 

Expert Comment

by:Theril
Comment Utility
> instead of using sizeof(* array) you should use sizeof(int)
as the elements of the array are integers. However for this specifiz example, sizeof(* array) should be equal to 4 which is equal to sizeo(int) :))

No, *array points to an int, so the effect is exactly same as sizeof(int). You propably mixed it with sizeof(array)?
Using *array insteads of *int is propably wiser, as there may come situation where one changes the datatype of array.
0
 
LVL 3

Expert Comment

by:cincin77
Comment Utility
array itself is a pointer and * array is a pointer to a pointer whose size is machine dependent.

do i miss something?
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Expert Comment

by:Theril
Comment Utility
> array itself is a pointer and * array is a pointer to a pointer whose size is machine dependent.

Maybe I said "*array points to an int" a bit wrong. What I ment was "*array is an int". Elements of int array are ints and *array is first element of the array (array[0]), so it's size is sizeof(int).

Try this one:

#include <stdio.h>
int main()
{
     char *foo = "foo";
     printf("Sizes: foo: %i *foo: %i\n", sizeof(foo), sizeof(*foo));
}
0
 
LVL 3

Expert Comment

by:cincin77
Comment Utility
iygggg
what i said was really ridiculous, i wrote as if array is a type.
sorry for this mistake.

thanks theril...

0
 
LVL 2

Expert Comment

by:jonnin
Comment Utility
note that you can resize the array with realloc; this is slow (do not add one element at a time, add 100 or 1000 or something each time you run out of space)

0
 

Author Comment

by:exiang
Comment Utility
should include a header file called <alloc.h>
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
<alloc.h> is not ANSI standard
should include a header file called <stdlib.h>
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
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…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops 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.

771 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now