一、指標
1、利用指標實現兩數交換:
#include using namespace std;
void swap1(int p,int q)
void swap2(int *p,int *q)
void swap3(int *p,int *q)
void swap4(int *p,int *q)
void swap5(int &p,int &q)
int main()
int main()
int main()
int main()
int main()
int main()
int main();
int main(){
s s;
int *p=&s.i;
p[0]=4;
p[1]=3;
s.p=p;
s.p[1]=1;
s.p[0]=2;
//cout<
p指標指向s.i的位址,p[0]=4,p[1]=3,所以此時s.i為4,s.p為3(位址為3)
s.p=p,即s.p=&s.i,s.p[1]也就是s.p,是同乙個地方,此時s.p位址為1
最後,s.p[0],因為s.p位址變了,所以就不是s.i了,相當於*((int *)1)=2;訪問的是0x00000001的空間——對乙個未做宣告的位址進行訪問,訪問出錯
二、函式指標
1、寫出函式指標、函式返回指標、const指標、指向const指標、指向const的const指標
void (*f)()
void * f()
const int*
int * const
const int* const
2、下面的資料宣告都代表什麼?
float(**def)[10];//def是乙個二級指標,它指向的是乙個一維陣列的指標,陣列元素都是float
double*(*gh)[10];//gh是乙個指標,它指向乙個一維陣列,陣列元素都是double*
double(*f[10])();//f是乙個陣列,有10個元素,元素都是函式的指標,指向的函式型別是沒有引數且返回double的函式
int*((*b)[10]);//就跟int*(*b)[10]是一樣的,是一維陣列的指標
long(*fun)(int);//函式指標,引數int返回值long
int(*(*f)(int,int))(int);//f是乙個函式的指標,指向的函式型別是兩個int引數且返回乙個函式指標的函式,返回的函式指標指向乙個有乙個int引數且返回int的函式
面試題 關於指標
面試題 下列c 程式會在哪一行崩潰?struct s main 分析 int p s.i時,一直到p 0 4,p 1 3的時候,p始終等於 s.i。s.p p 建立了如下的關係 s.p存了p的值,也即 s.i,s.p 1 相當於 s.i 1 即s.i的位址加1.也就是s.p.s.p 1 和s.p其實...
面試題 指標 引用
返回目錄 問題 問 引用與指標有什麼區別?答 1.引用必須初始化,指標可以不用。2.引用初始化以後就不能被改變 即只能初始化一次,始終只指向指定的物件 而指標可以改變所指向的物件。3.不存在指向空值的引用,而指標可以指向乙個空值,即空指標。4.因為引用不能指向空值,這意味著使用引用之前不需要測試其合...
面試題 指標 void 通用指標
返回目錄 問題 問 函式中的void和指標中的void 有什麼區別?答 在函式中的void是表示無型別或無返回型別。void指標是通用指標,用來存放任何資料型別的引用。分析 void真正發揮的作用在於 1.對函式返回的限定。2.對函式引數的限定。函式返回值 函式名 引數1,引數2,引數3,int s...