Нет, они не одинаковы. Предположим, что d
является указателем на int
:
int n = 0;
int* d = &n;
*d++; // d++ then *d, but d++ is applied after the statement.
(*d)++; // == n++, just add one to the place where d points to.
Я думаю, что в K & R есть пример, где нам нужно скопировать c-строку в другую:
char* first = "hello world!";
char* second = malloc(strlen(first)+1);
....
while(*second++ = *first++)
{
// nothing goes here :)
}
Код прост: поместите символ, обозначенный first
, в символ, обозначенный second
, затем увеличьте оба указателя после выражения. Конечно, когда копируется последний символ '\ 0', выражение приводит к false
и останавливается!