程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 關於指針運算(什麼鬼),指針運算

關於指針運算(什麼鬼),指針運算

編輯:關於C語言

關於指針運算(什麼鬼),指針運算


/*話說吾輩終於成功通過研發工作室的筆試面試闖到了最後一關考核了呢,作為一個小白想起來真是有點膽戰心驚……然後身為c++考核組的成員我選了制作思維導圖的項目……首先自己有在用mindmap,有些自己的小想法想實現,就是比較有感覺吧(做計算器什麼的真是沒興趣orz),而且難度應該也適中……的樣子(我什麼都不知道orz)。兩個月從零學習c++還要在前輩指導下一個人做出一個mindmap軟件基礎版和進階版……要是能做成那真是18年來的首次奇跡呢所以這兩個星期主要刷anyview的題和學習c++,干巴爹*/

 

以指針*p為例:

①*p++/*(p+n):“*”和“++”的優先級相同所以運算順序從右向左(不過還是寫作*(p++)更能體現重點),因此“++”應用於指針自增1,如p指向a[0]地址(即a),則p+1指向a[1]地址,*p+1=a[1],而不是指針指向的數據自增1,同理在後面加上幾都是一樣的,不過加數字要打括號.

code:

1 #include<stdio.h>
2 int main()
3 {
4     int cww[]={1,10,100};
5     int *a;
6     a=cww;
7     printf("*a=%d\n*(a+1)=%d\n*(a+2)=%d\n",*a,*(a+1),*(a+2));
8     return 0;
9 }

運行結果:

 

②(*p)++/(*p)+n:即將指針指向地址所存放的值加上n.

 

③地址相關:

code:

 1 include<stdio.h>
 2 int main()
 3 {
 4     int cww[]={1,10,100};
 5     int *a;
 6     a=cww;
 7     printf("a    =%d\na+1  =%d\na+2  =%d\n&(*a)=%d,以上整型都是十進制地址\n",a,a+1,a+2,&(*a));
 8     printf("a    =%p是十六進制地址\n",&a);
 9     return 0;
10 }

運行結果:

 

。。。感覺沒什麼東西呢

【END】

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved