Разница между значением указателя, адресом указателя, переменной указателя
первый код:
void Push(struct node** headRef, int data) { struct node* newNode = malloc(sizeof(struct node)); newNode->data = data; newNode->next = *headRef; // The '*' to dereferences back to the real head *headRef = newNode; // ditto } void PushTest() { struct node* head = BuildTwoThree();// suppose this returns the list {2, 3} Push(&head, 1); // note the & Push(&head, 13); // head is now the list {13, 1, 2, 3}
второй код:
void foo(char *ptr) { ptr++; // Move the pointer (but it's pass by value) } void bar() { char *str = "cat"; char *ptr = str; foo(ptr); printf("%s\n", ptr); // Prints "cat" }
Что я уже пробовал:
i was confuse here in first code<pre>Push(&head, 1)он вызывает Push и дает адрес head, head-это указатель на узел структуры, который внутри него также указывает на другой узел.
&ампер;голова здесь обозначает адрес руководителя/адрес какой магазин зайти?
что на самом деле он передает функции Push
во втором коде есть foo(ptr), вызовы foo и pass ptr, ptr-это указатель на строку, и он указывает "c" в "cat", но на самом деле что передается функции foo?
это адрес ptr/адрес "c "в"cat"??
я был перепутан со значением указателя, адресом указателя и самим адресом переменной указателя!!!!!