Pointer confusion (1 Viewer)

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

148
0
There something really fishy going on here and I can't put my finger on it...
Here is the situation in condensed form:

Code:
	WordSt **stpt, *starr; //stpt - pointer to start of array; starr - array of pointers to the structs
...
		stpt=malloc(count*sizeof(starr*)); //syntax error : ')' - whats with that anyway?
		....
			starr[wz]=malloc(sizeof(WordSt)+len*sizeof(char)); //C2679: binary '=' : no operator found which takes a right-hand operand of type 'void *' (or there is no acceptable conversion) Trying to convert it doesn't cut it either...
			starr[wz]->len=len; //Says it need '.' When I put '.'(as in (*starr[wz]).len) it says "illegal indirection". Also any version with -> doesn't work
What I know - indexing is also a form of memory manipulation, so it should work. And (*b).el == b->el. Btw first option gives me an automatic menu for choosing between the elements, no such luck with the second one.
Help!
 
Last edited:

chroot

Staff Emeritus
Science Advisor
Gold Member
10,097
33
There are so many things wrong here, it's hard to even know where to begin.

1) Give your variables meaningful names.
2) stpt is not a pointer, it's a pointer to a pointer. malloc returns a pointer, so you don't want to be assigning the result of malloc to stpt.
3) The syntax "starr*" is meaningless in the context you used it.
4) You're assigning values to starr[wz], but starr is a garbage pointer, and this will cause a segfault.
5) You need to cast the void* that malloc returns into the WordSt* you want it to be.
6) starr[wz] is a structure, not a pointer to a structure, so you should not be using ->, you should just be using dot-notation. You don't need to dereference starr[wz] at all, as starr[wz] is not a pointer. That's what "illegal indirection" means.

- Warren
 

The Physics Forums Way

We Value Quality
• Topics based on mainstream science
• Proper English grammar and spelling
We Value Civility
• Positive and compassionate attitudes
• Patience while debating
We Value Productivity
• Disciplined to remain on-topic
• Recognition of own weaknesses
• Solo and co-op problem solving
Top