954,141 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

valid or not

consider the statement
++*p++
if it is valid then evaluate it.

Sukhbir
Light Poster
31 posts since Jul 2004
Reputation Points: 11
Solved Threads: 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

kc0arf
Posting Virtuoso
Team Colleague
1,937 posts since Mar 2004
Reputation Points: 121
Solved Threads: 57
 

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.

Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

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

kc0arf
Posting Virtuoso
Team Colleague
1,937 posts since Mar 2004
Reputation Points: 121
Solved Threads: 57
 

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", <strong>++*hello++</strong>);

	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

Stack Overflow
Junior Poster
193 posts since Sep 2004
Reputation Points: 26
Solved Threads: 4
 

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 ;)

Decency
Newbie Poster
22 posts since Aug 2004
Reputation Points: 10
Solved Threads: 1
 

Yeah,it is hard to konw.

XianBin
Newbie Poster
24 posts since Aug 2004
Reputation Points: 15
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You