在下面的代碼中,期望的輸出是1.但它變成了2.引用如何改變?通過使用指針指針來更改引用
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
int *ptr1 = &a, *ptr2 = &b, *ptr3 = &c;
int **sptr = &ptr1; //-Ref
*sptr = ptr2;
printf("%d",*ptr1);
}
在下面的代碼中,期望的輸出是1.但它變成了2.引用如何改變?通過使用指針指針來更改引用
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3;
int *ptr1 = &a, *ptr2 = &b, *ptr3 = &c;
int **sptr = &ptr1; //-Ref
*sptr = ptr2;
printf("%d",*ptr1);
}
int main()
{
int a = 1, b = 2, c = 3;
int *ptr1 = &a, *ptr2 = &b, *ptr3 = &c;
// ptr1 points to a
// ptr2 points to b
int **sptr = &ptr1; //-Ref
// *sptr points to ptr1 , that means **sptr points indirectly to a
*sptr = ptr2; //this translates in ptr1 = ptr2, that means ptr1 points to what ptr2 pointed
return 0;
}
包含什麼?主要從哪裏回來?如果你把整個代碼,讓它可以接受。 – zoska 2014-10-06 12:19:17
int a = 1, b = 2, c = 3;
int *ptr1 = &a, *ptr2 = &b, *ptr3 = &c;
ptr1
的值是a
的地址,ptr2
值爲b
的地址。
int **sptr = &ptr1; // sptr has address of ptr1
由於sptr
指向ptr1
(它的值是ptr1
的地址),通過使用*sptr
我們可以改變的ptr1
值。
*sptr = ptr2; //here we are altering contents of sptr and value of ptr1.
所以現在ptr1
點,其中ptr2
一樣。致b = 2
;
您認爲什麼?爲什麼? – 2014-10-06 11:29:31
你的代碼中沒有引用 - 「&」表示應用於表達式時的「地址」。 – molbdnilo 2014-10-06 11:33:43
「爲什麼」?因爲你剛剛編碼它? – 2014-10-06 11:34:10