Question: If we have a `char *hello` - and the string is `"hello"`

and i do 

```
char *ptr;
ptr = hello;

```

then ptr will be pointing at `'h'`, correct?

Now I have just done an assignmnet in this and completed it using the following terms

if i wanted to move the pointer to the next chatachter i would just do `ptr++`. If i wanted to use the value of the pointer for some check, i would use `if(*ptr == '\0')...`

When i was doing the assignmnets our teacher gave us some pre built methods, and they used stuff like 

```
*string++ = *s++;

```

ok, so why would we want to do `*string` (which gets a value) - and combine it with `++`

I hope i make sense in explaining what is not clear. Its just I managed to do the whole assignment with ptr++ to move to next element or \*ptr to check its value

Answer: 
Not quite. In your original question, `ptr` would be set to point to the same first character as `hello`, which may *not necessarily* be `h`. You may have done:

```
char *hello = "goodbye";

```

in which case both `hello` and `ptr` will point to that `g`. However your edit now makes it clear that you meant:

```
char *hello = "hello";

```

Your comment on `ptr++` is correct. It will move `ptr` so that it points to the next character and, as per C string handling convention, `'\0'` marks the end of the string.

The statement:

```
*string++ = *s++;

```

is something you often see in string copying code (copying `s` to `string`), something like:

```
char *mystrcpy (char *d, char *s) {
    char *d2 = d;
    while (*s != '\0')
        *d2++ = *s++;
    *d2 = '\0';
    return d;
}

```

In this case, the line `*d2++ = *s++;` means:

* copy the character at `s` to the memory location `d2`.
* increment `d2` to point to the next destination character.
* increment `s` to point to the next source character.

In other words,

```
*string++ = *s++;

```

is functionally identical to:

```
*string = *s;
string++;
s++;

```
> 
> then ptr will be pointing at h, correct?
> 
> 
> 

~~Yes.~~ No. See [@paxdiablo's answer](https://stackoverflow.com/questions/2305805/stuck-with-syntax-in-c-pointers/2305813#2305813).

> 
> `*string++ = *s++;`
> 
> 
> 

This statement can be viewed as

```
*string = *s;
string ++;
s ++;

```

That means:

1. Copy the character in `s` to the location pointed by `string`.
2. Move both `s` and `string` to the next character.