程式設計師面試寶典隨筆記(一)指標和 相關

2021-08-11 20:32:54 字數 1590 閱讀 4333

1.(*p)++和*(p++)和*p++的區別:

總結:

字首遞增遞減和*優先順序相同,從右到左;

字尾遞增遞減比字首優先順序高,從左到右。比如1

2

intarr[5] = ;

int*p = arr;

*++p:p先自+,然後*p,最終為3

++*p:先*p,即arr[0]=1,然後再++,最終為2

*p++:值為arr[0],即1,該語句執行完畢後,p指向arr[1]

(*p)++:先*p,即arr[0]=1,然後1++,該語句執行完畢後arr[0] =2

*(p++):效果等同於*p++

例子:

#include "stdafx.h"

#include "stdio.h"

#include int _tmain(int argc, _tchar* argv)

; int *p;

p=a;

int k1,k2,k3;

//測試第一部分

printf("%d\n",p);

*p++=10;

printf("%d\n",p);

printf("%d\n",a[0]);//這裡不用*p來讀取數值是因為p的值已經改變,只好用a[0]來實現。

printf("%d\n",a[1]);

//測試第二部分

int b[5]=;

int *q;

q=b;

k1=*q++;

q=b;

k2=(*q)++;

q=b;

k3=*(q++);

printf("k1的值是%d\n",k1);

printf("k2的值是%d\n",k2);

printf("k3的值是%d\n",k3);

實現的是將10賦值給*p後p在自增1,也就是使得a[0]的值為10,而不是a[1]的值為10;之後自增*(p++)指向a[1]

測試第二部分:

[cpp]

view plain

copy

k1=*q++;  

先將*q的值賦給k1,然後q值再自增,指向b[1];

[cpp]

view plain

copy

k2=(*q)++;  

先將*p的值賦給k2,然後*q值再自增,b[0]的值加1;

[cpp]

view plain

copy

k3=*(q++);  

和1相同,但是因為b[0]的值加1了,所以k3為2;

區別指標在表示式的左側還是右側!

程式設計師面試寶典一

1 int i i 首先宣告乙個變數i,然後將變數i的值 未初始化 賦值給自己 2 下面 的意義 void func int x,int count 求乙個整數轉換為二進位制之後包含多少個1 3 printf在vc6.0下是自右向左運算的 好像跟編譯器有關 int arr int ptr arr p...

C學習筆記之一 指標

指標變數 指標變數也是乙個變數,在指標中存放的內容是一塊記憶體空間的位址。就是說,指標就是 記憶體位址 計算機記憶體的最小單位是byte,每乙個byte都有乙個唯一的編號,這個編號就是記憶體空間的位址,通常叫作記憶體位址。這個編號在32位作業系統下是乙個32位的整數,在64位作業系統下是乙個64位的...

Java程式設計師面試寶典筆記

第六章1.變數必須先初始化後才能使用。2.byte short 和char 型別的運算操作首先會把這些值轉換為int 型別,然後對int 型別進行運算,最後得到int 型別的結果。3.靜態方法裡只能呼叫靜態方法 包括main 方法 4.main 方法必須加public 修飾,如果不加則預設為prot...