944,000 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 2971
  • C RSS
Aug 31st, 2004
0

valid or not

Expand Post »
consider the statement
++*p++
if it is valid then evaluate it.
Reputation Points: 11
Solved Threads: 0
Light Poster
Sukhbir is offline Offline
31 posts
since Jul 2004
Aug 31st, 2004
0

Re: valid or not

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
Team Colleague
Reputation Points: 121
Solved Threads: 57
Posting Virtuoso
kc0arf is offline Offline
1,629 posts
since Mar 2004
Aug 31st, 2004
0

Re: valid or not

Increment the object pointed to by p, then increment the pointer p (point to the next object).
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. char text[] = "1b#", *p = text;
  6. printf("text = \"%s\", p(%p) = \"%s\", *p = '%c'\n", text, (void*)p, p, *p);
  7. ++*p++;
  8. printf("text = \"%s\", p(%p) = \"%s\", *p = '%c'\n", text, (void*)p, p, *p);
  9. return 0;
  10. }
  11.  
  12. /* my output
  13.   text = "1b#", p(0012FF88) = "1b#", *p = '1'
  14.   text = "2b#", p(0012FF89) = "b#", *p = 'b'
  15.   */
Really, this code is trivial to come up with on your own. At least give these a try.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Aug 31st, 2004
0

Re: valid or not

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
Team Colleague
Reputation Points: 121
Solved Threads: 57
Posting Virtuoso
kc0arf is offline Offline
1,629 posts
since Mar 2004
Sep 1st, 2004
0

Re: valid or not

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

	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
Reputation Points: 26
Solved Threads: 4
Junior Poster
Stack Overflow is offline Offline
185 posts
since Sep 2004
Sep 1st, 2004
0

Re: valid or not

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
Reputation Points: 10
Solved Threads: 1
Newbie Poster
Decency is offline Offline
22 posts
since Aug 2004
Sep 5th, 2004
0

Re: valid or not

Yeah,it is hard to konw.
Reputation Points: 15
Solved Threads: 0
Newbie Poster
XianBin is offline Offline
24 posts
since Aug 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: My "if" is not good
Next Thread in C Forum Timeline: "\x00" problem





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC