對于眾多人提出的c/c++中指針難學的問題做個總結:
指針學習不好關鍵是概念不清造成的,說的簡單點就是書沒有認真看,指針的學習猶如人在學習饒口令不多看多學多練是不行的,下面是兩個很經典的例子,很多書上都有,對于學習的重點在于理解*指針運算符的作用,假設定義了一個指針變量x,*x所表示的其實就是變量a本身,x表示的是變量a在內存中的地址,如果想明白可以輸出觀察cout < <*x"|"x;,當定義了int *x;后對x=&a的理解的問題。仔細閱讀和聯系下面的兩個例子我想指針問題就不是難點了!
/*程序作者:管寧/*程序作者:管寧
站點:www.cndev-lab.com
所有稿件均有版權,如要轉載,請務必著名出處和作者*/
#include <stdio.h>
main()
{
int a,b; /* 定義a,b兩個整形變量用于輸入兩個整數 */
int *point_1,*point_2; /* 定義三個指針變量 */
scanf("%d,%d",&a,&b); /* 格式化輸入a,b的值 */
point_1 = &a; /* 把指針變量point_1的值指向變量a的地址 */
point_2 = &b; /* 把指針變量point_2的值指向變量b的地址 */
compositor(point_1,point_2); /* 調用自定義的排序涵數,把a,b的地址傳遞給point_1和point_2 */
printf("%d,%d",a,b); /* 打印出a,b的值 */
}
static compositor(p1,p2)
int *p1,*p2; /* 定義形式參數p1,p2為指針變量 */
{
int temp; /* 建立臨時存儲變量 */
if (*p1<*p2) /* 如果*p1<p2,注意這里的*p1和*p2其實就是a和b */
{
temp = *p1; /* 利用變量temp用于臨時存儲*p1和就是a的值 */
*p1 = *p2; /* 將*p1的值也就是a的值換成*p2的值也就是b的值,等價于a=b */
*p2 = temp; /* 將*p2的值也就是temp的值等價于b=temp */
}
}
/* 注意:此題與上題不同的是,直接改變了a于b的值達到真實改變的目的 */