bit of C help

Martin

Lifer
Jan 15, 2000
29,178
1
81
so I haven't done C in about 3 years, so I was wondering if I could get a bit of help.

I need to make a function that returns a "char **" type. in my function I have

char[size] result;
// fill the array with stuff
return &result;

I seem to remember that the array's first element is a pointer, so this should return the pointer to that? or is my memory failing me?
 

sao123

Lifer
May 27, 2002
12,648
201
106
first of all... all elements of the array are the same...
so... if the first element of the array is a pointer, then all of them are.



return &array;
returns the address of the first element.

so this function...

type* foo()
{
type array[20];
//do something
return &array;
}


would be used like this...

type* array_pointer;
array pointer = foo();


however...
char** is a pointer to a pointer... a highly nontypical scenerio.
 

aCynic2

Senior member
Apr 28, 2007
710
0
0
Remember, anything allocated on the stack is freed when the function returns and it's contents are not reliable.

Since you're saying C, not C++, you can malloc for your pointer and return that. So... (keep in mind, it's been perhaps 10 year since I programmed).

char *func()
{
char *p;

if ((p = (char *) malloc (P_SIZE + 1)) = NULL)
return p;

/* do what you need */

return p;
}


Regardless of success you return p, and test it in the receiving function for NULL/not NULL.

 

Matthias99

Diamond Member
Oct 7, 2003
8,808
0
0
however...
char** is a pointer to a pointer... a highly nontypical scenerio.

...unless you want an array of (char *) pointers -- for instance, a table of variable-length strings. It's also what gets passed into your 'main' function in the 'argv' variable, so it's pretty common to see.

e.g.

char character_array[20];

produces an array of 20 chars -- 'character_array' or '&character_array' or '&(character_array[0])' are of type (char *) or (char[ ]).

char * character_pointer_array[20];

produces an array of 20 (char *) pointers -- 'character_pointer_array' or '&character_pointer_array' or '&(character_pointer_array[0])' are of type ((char *)*) or ((char *)[ ]).
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |