6
Contributors
6
Replies
7
Views
12 Years
Discussion Span
Last Post by XianBin
0

Hello,

I am no C++ genius, but

++*p++

Cannot be a statement by itself, as there is no ; to finish it.

I am trying to remember if *p is significant. I know that &p is... the address of the variable p. p++ is just an incrementor. But C++ has been a "variable first, then operator" type of language. cars++ people--

I think it is an error.

Christian

0

Increment the object pointed to by p, then increment the pointer p (point to the next object).

#include <stdio.h>
  
  int main(void)
  {
     char text[] = "1b#", *p = text;
     printf("text = \"%s\", p(%p) = \"%s\", *p = '%c'\n", text, (void*)p, p, *p);
     ++*p++;
     printf("text = \"%s\", p(%p) = \"%s\", *p = '%c'\n", text, (void*)p, p, *p);
     return 0;
  }
  
  /* my output
  text = "1b#", p(0012FF88) = "1b#", *p = '1'
  text = "2b#", p(0012FF89) = "b#", *p = 'b'
  */

Really, this code is trivial to come up with on your own. At least give these a try.

0

Hello,

I stand corrected. Reading another post in the forum, people apparently do use ++variable syntax. I always took the style of variable++ and went with it to avoid confusion.

So

++p would be valid.

++*p++ I think is a problem.

Christian

0

You could say its valid, though it really all depends on how or why its used:

void pointTo(char **src, char *dst) {
	*src = dst;
}

int main() {
	char h[25];
	char *hello;

	pointTo(&hello, h);

	strcpy(h, "Hello world!");

	printf("%c\n", [b]++*hello++[/b]);

	return 0;
}

You could ask yourself, "Wow, how'd it come up with 'I'?", though its perfectly understandable. *hello++ is 'H', as the first letter of our string, though ++*hello++ moves our first letter 'H' one to the right, resulting in the next letter of the alphabet, 'I'.


Hope this makes sense,
- Stack Overflow

0

hello, well this is valid in C++ but you may try to do it in separate statements or store the results in separate pointers just to avoid the logical errors that might occur, always remember flexibility comes before simplisity ;)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.