Google
 
Webnews.only-4-geeks.com
Interesting places
news.only-4-geeks.com Forum Index » CGoto page 1, 2  Next

char**

 
Jump to:  
 
MN
PostPosted: Sat Aug 30, 2008 10:01 am    Post subject: char**
       
I have a question :
How to understand the mean of char** type ?
 

 
Richard Heathfield
PostPosted: Sat Aug 30, 2008 10:01 am    Post subject: Re: char**
       
MN said:

Quote:
I have a question :
How to understand the mean of char** type ?

char is a type - objects of that type are 1 byte in size and can contain as
their value any single member of the execution character set.

char * is a type - objects of that type are sizeof(char *) bytes in size,
and can contain as their value the address of a single char.

char ** is a type - objects of that type are sizeof(char **) bytes in size,
and can contain as their value the address of a single char *.

What is the question behind the question?

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
 

 
pete
PostPosted: Sat Aug 30, 2008 10:22 am    Post subject: Re: char**
       
MN wrote:
Quote:
On Aug 30, 2:55 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
MN said:

I have a question :
How to understand the mean of char** type ?
char is a type - objects of that type are 1 byte in size and can contain as
their value any single member of the execution character set.

char * is a type - objects of that type are sizeof(char *) bytes in size,
and can contain as their value the address of a single char.

char ** is a type - objects of that type are sizeof(char **) bytes in size,
and can contain as their value the address of a single char *.

What is the question behind the question?

--
Richard Heathfield <http://www.cpax.org.uk
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php
"Usenet is a strange place" - dmr 29 July 1999

the question is :
I have a function which returns an array of chars with 2 dimensions.
The size of array is dynamically changed by malloc.

I don't understand what you mean.

Does your function create the array
and then the calling function changes the size of the array,
or
does your function receive the address of an array as a argument
and then change the size of it?


Quote:
To return this array I must declare it as an extern in the header file
like this: extern char** array.
if I use extern char* array, I get error.


--
pete
 

 
Guest
PostPosted: Sat Aug 30, 2008 10:32 am    Post subject: Re: char**
       
On Aug 30, 6:01 am, MN <mazouz.nezh...@gmail.com> wrote:
Quote:
I have a question :
How to understand the mean of  char** type ?

Well, it's a pointer to a pointer to a char. So if char * can
represent a string, char ** points to multiple strings. For example,
to define an array of strings one would usually:
char *arr[] = { "one", "two", "three" };

If you want more clarification you need to be more specific in your
post Razz
 

 
Malcolm McLean
PostPosted: Sat Aug 30, 2008 10:49 am    Post subject: Re: char**
       
"MN" <mazouz.nezhate@gmail.com> wrote in message
Quote:
the question is :
I have a function which returns an array of chars with 2 dimensions.
The size of array is dynamically changed by malloc.
To return this array I must declare it as an extern in the header file
like this: extern char** array.
if I use extern char* array, I get error.
Multidimensional arrays aren't implemented well in C.

One way of doing them is to declare a 2d array

char array[10][10];

but this is fixed. The other way is to declare a list of pointers to
pointers

char **array = malloc(10 * sizeof(char *));
for(i=0;i<10;i++)
array[i] = malloc(10 * sizeof(char));

these two representations have very little in common with each other.

Another way is to allocate a 1d array and manage it manually

char *array = malloc(10 * 10 * sizeof(char));

/* set x, y, to the letter F */
array[y*10+x] = 'F';

You need to find out which method your function is using, which is probably
the second.

--
Free games and programming goodies.
LINK
 

 
MN
PostPosted: Sat Aug 30, 2008 12:07 pm    Post subject: Re: char**
       
On Aug 30, 2:55 pm, Richard Heathfield <r...@see.sig.invalid> wrote:
Quote:
MN said:

I have a question :
How to understand the mean of char** type ?

char is a type - objects of that type are 1 byte in size and can contain as
their value any single member of the execution character set.

char * is a type - objects of that type are sizeof(char *) bytes in size,
and can contain as their value the address of a single char.

char ** is a type - objects of that type are sizeof(char **) bytes in size,
and can contain as their value the address of a single char *.

What is the question behind the question?

--
Richard Heathfield <http://www.cpax.org.uk
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php
"Usenet is a strange place" - dmr 29 July 1999

the question is :
I have a function which returns an array of chars with 2 dimensions.
The size of array is dynamically changed by malloc.
To return this array I must declare it as an extern in the header file
like this: extern char** array.
if I use extern char* array, I get error.
 

 
Keith Thompson
PostPosted: Sat Aug 30, 2008 3:29 pm    Post subject: Re: char**
       
MN <mazouz.nezhate@gmail.com> writes:
Quote:
I have a question :
How to understand the mean of char** type ?

In your later followup, you said you had a function returning an
array. (Actually, a function can't directly return an array.)

Read section 6 of the comp.lang.c FAQ, <http://www.c-faq.com/>.

--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
 

 
Barry Schwarz
PostPosted: Sat Aug 30, 2008 11:19 pm    Post subject: Re: char**
       
On Sat, 30 Aug 2008 03:32:04 -0700 (PDT), zzt256@gmail.com wrote:

Quote:
On Aug 30, 6:01 am, MN <mazouz.nezh...@gmail.com> wrote:
I have a question :
How to understand the mean of  char** type ?

Well, it's a pointer to a pointer to a char. So if char * can
represent a string, char ** points to multiple strings. For example,

A variable of type char* cannot represent a string. It can however
point to a char which is a character in a string (usually the first
character).

Quote:
to define an array of strings one would usually:
char *arr[] = { "one", "two", "three" };

While this code is correct, arr does not have type char**. It has
type array of three pointers to char which is expressed syntactically
as char *[3].

--
Remove del for email
 

 
Barry Schwarz
PostPosted: Sat Aug 30, 2008 11:19 pm    Post subject: Re: char**
       
On Sat, 30 Aug 2008 10:55:21 +0000, Richard Heathfield
<rjh@see.sig.invalid> wrote:

Quote:
MN said:

I have a question :
How to understand the mean of char** type ?

char is a type - objects of that type are 1 byte in size and can contain as
their value any single member of the execution character set.

char is an integer type and an object of that type can contain any
value between CHAR_MIN and CHAR_MAX, inclusive (independent of whether
the value represents a member of the execution character set).

Quote:

char * is a type - objects of that type are sizeof(char *) bytes in size,
and can contain as their value the address of a single char.

char ** is a type - objects of that type are sizeof(char **) bytes in size,
and can contain as their value the address of a single char *.

What is the question behind the question?

--
Remove del for email
 

 
Barry Schwarz
PostPosted: Sat Aug 30, 2008 11:19 pm    Post subject: Re: char**
       
On Sat, 30 Aug 2008 05:07:54 -0700 (PDT), MN
<mazouz.nezhate@gmail.com> wrote:

Quote:
On Aug 30, 2:55 pm, Richard Heathfield <r...@see.sig.invalid> wrote:

snip

Quote:
What is the question behind the question?

--
Richard Heathfield <http://www.cpax.org.uk
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php
"Usenet is a strange place" - dmr 29 July 1999

Please don't quote signatures (the previous 5 lines).

Quote:

the question is :
I have a function which returns an array of chars with 2 dimensions.
The size of array is dynamically changed by malloc.
To return this array I must declare it as an extern in the header file
like this: extern char** array.
if I use extern char* array, I get error.

I assume you meant dynamically allocated instead of changed.

The return type for your function depends on the method you use to
allocate the array.

One popular method is to dynamically allocate space for a number
of pointers to char (corresponding to each row of your array). Then
allocate space for each of those pointers to hold the number of
characters in each row. This will allow you to refer to an array
element using normal subscript notation of the form array[i][j]. In
this case, you would indeed return a char** (which would point to the
first allocated space).

Another popular method is to compute the total amount of space
needed for the array and allocate it in a single block. You then
refer to the j-th element in the i-th row with syntax of the form
array[i*number_of_columns+j]. In this case, your function would
return a char* which would point to element [0][0].

--
Remove del for email
 

Page 1 of 2 .:. Goto page 1, 2  Next

Google
 
Webnews.only-4-geeks.com

Windows Update | C++ | C | PHP | JavaScript | Photoshop | Programming | Windows 2000 | Python | Windows XP | Object | Flash | Flash - ActionScript | Paint Shop Pro | Excel | PowerPoint | Access | Word | Windows 98 | Internet Explorer 6.0 | CorelDraw12 | Java | XML | asm x86 | Linux Mandrake | Linux RedHat | Outlook |  | news from newsgroups |_ | s

Web Templates

Awesome Website Templates ©

wypożyczalnia samochodów kraków poker online Socken Herstellung Porównanie Cen OC york sklep