1,表示式:*p++ ,++和*優先順序相同,結合方向自右向左,因此等價於*(p++)
,也就是先得到p所指向的變數值(*p),再使p=p+1。
注意區別:
*p++:先取得當前p所指向的變數值,再使p指向後乙個變數,相當於a[i++];
*p--:先取得當前p所指向的變數值,再使p指向前乙個變數,相當於a[i--];
*++p:先使p指向後乙個變數,再取得當前p所指向的變數值,相當於a[++i];
*--p:先使p指向後乙個變數,再取得當前p所指向的變數值,相當於a[--i]; 例:
#includeint main()
輸出為:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
2,乙個32位的機器,該機器的指標是多少位?
指標是多少位看的是機器的位址匯流排的位數,80386以後的機子都是32位的資料匯流排,所以指標的位數就是32即4個位元組。
3,下面的程式輸出的是什麼?
#includevoid main()
; int *ptr = (int *)(&a+1);
printf("%d,%d\n",*(a+1),*(ptr -1));
}
&a+1不是
首位址加一,而是偏移乙個陣列的大小,上面題目中是偏移5個int。&a是陣列指標,其型別為int(*)[5],而指標加1要跟據指標型別加上一定的值。
故輸出結果為:2,5。
4,「int(*s[10])(int);」表示的什麼?
(1),的優先順序比*高,所以s先與結合,顯然他是個陣列。
(2),*s[10],說明陣列元素的型別是指標。
(3),指標的型別又是int(*)(int),結合指向指標的函式概念去理解。
(4),綜上,他的含義是,定義了乙個含有10個函式指標的陣列。
C語言查漏補缺
char a 2 20 a 1 hello 這是錯誤的。c語言把這語句解釋為乙個指標與另乙個指標之間的 非法的 賦值運算。但是在初始化時,char a 2 20 是允許的。對於字串陣列,可以使用 法1 char strs 2 strs 1 hello 法2 char strs 2 20 strcpy...
c語言基礎查漏補缺
該部分只是用來記錄c語言模糊的知識點 以下寫法錯誤 char c 123 char c1 哦 1.作用 用來計算乙個變數或者乙個常量 一種資料型別所佔的記憶體位元組數。2.基本形式 sizeof 變數 常量 int size sizeof a sizeof 變數 常量 int size sizeof...
DOM查漏補缺
使用getattribute 方法只能獲取屬性的文字內容,比如script或者style就不方便了,因此建議使用屬性的方法來獲取,即elenode.attr這種形式 但是自定義的標籤屬性必須使用getattribute 方法來獲得。屬性的方法會返回undefined 修改class通過屬性名的方法是...