平時學術必須用Python多啊,但校招筆試繞不開語言基礎,非cs科班小弱臨陣整理些C++題備考。很弱很苦逼。。。php
1、指針html
1.二維數組指針數組
#include<stdio.h> int main(int args,char ** argv) { int map[3][3]={ {1,2,3}, {4,5,6}, {7,8,9} }; int **pMap=(int **)map; printf("%d\n",map);//數組的首地址 printf("%d\n",*(map+1));//數組第二行首地址 printf("%d\n",*map+1);//數組首行的第二列地址 printf("%d\n",**(map+1));//第二行第一列數值 printf("%d\n",*(*(map+1)+1));//第二行二列數值 printf("%d\n",*(map+1)+1);//第二行二列地址 printf("%d\n",pMap[4]);//數組中的第5個數 printf("%d\n",&pMap[4]);//數組中的第4個數的地址 return 0; }
2. 引用和指針的區別安全
★相同點:函數
●都是地址的概念;ui
指針指向一塊內存,它的內容是所指內存的地址;而引用則是某塊內存的別名。spa
★不一樣點:.net
2、sizeof指針
1.常規
char str1[] = 「Hello」 ;
char str2[5] = {'H','e','l','l','o'};
char str3[6] = {'H','e','l','l','o','/0'};
char *p1 = "Hello";
char *p2[]={"hello","world"};
int n = 10;
int *q = &n;
sizeof (str1 ) = 6 (自動加了'/0')
strlen (str1 ) = 5 (字符串的長度)
sizeof (str2 ) = 5 (字符數組的大小)
strlen (str2) = 未知 (該字符串缺乏結束符'/0')
sizeof (str3) = 6 (字符數組的大小)
strlen (str3) = 5 (該字符串的長度爲5)
sizeof ( p1 ) = 4 (p1是一個指針,大小爲4)
sizeof ( p2 ) = 8 (p2是長度爲2的字符串數組)
sizeof ( n ) = 4 (整型大小爲4)
sizeof ( q ) = 4 (q是一個指針,大小爲4)
2.動態分配內存
int *p = (int *)malloc( 100 );
sizeof ( p ) = 4 (p是一個指針,大小爲4)
3.函數參數
void Function1( char p[],int num ){
sizeof ( p ) = 4 (數組在作爲函數參數時均化爲指針)
}
void Function2( int p[],int num ){
sizeof ( p ) = 4 (數組在作爲函數參數時均化爲指針)
}
code
3、類和對象
四. static
1.static關鍵字,static全局變量與普通全局變量的區別,static局部變量與普通變量的區別,static函數與普通函數的區別
static全局變量與普通的全局變量有什麼區別:static全局變量只初使化一次,防止在其餘文件單元中被引用;
static局部變量和普通局部變量有什麼區別:static局部變量只被初始化一次,下一次依據上一次結果值;
static函數與普通函數有什麼區別:static函數在內存中只有一份,普通函數在每一個被調用中維持一份拷貝。
五. const
在C中,const主要用來修飾變量、函數參數。 const做用於變量時,表示該變量具備不可改變的屬性。固然,由這個屬性,咱們就能夠清楚地知道爲何const變量要在定義的時候初始化,由於,const變量一旦定義以後,就不能改變(固然,這不是絕對的)。 很經典的例子是const修飾指針,int a = 3; const int * p = &a; int const *p = &a; int * const p = &a; const int * const p = &a; 一個區分const究竟是修飾指針自己,仍是修飾所指向的內容的簡單的方法是看const位於*號的前仍是後。若是const位於*號前,則修飾指針指向的內容;若是位於*號後,則修飾指針。由const的本質屬性,咱們就能夠很容易地知道,const位於*號前,表示指針指向的內容不能修改,const 位於*號後,表示指針自己不能修改。若是有兩個const,則表示指針指向的內容和指針自己均不能修改。 const做用於函數參數時,由const的本質屬性,咱們很容易清楚該函數不能改變這個參數。固然,經常使用的是const指針做參數。 在C中,const的用法主要就是上面兩點。
在C++中,除了C中的用法外,還有如下一些用法。 const做用於類的成員,包括成員變量和成員函數。 const做用於成員變量時,咱們一樣能夠根據const的不可修改屬性,推論出該成員變量不可被改變。這就引出一個問題,const成員變量如何初始化?解決方法就是構造函數的初始化列表。咱們知道,C++中,通常經過成員函數來訪問成員變量的,而通常的成員函數是能夠改變成員變量的值的,又由於const成員變量是不能夠修改的,因此,咱們就明白了爲何非const成員函數不能訪問const成員變量了。 const做用於成員函數時,那麼咱們就能夠推斷出該函數不能修改爲員變量的值,包括const成員變量和非const成員變量。固然,咱們還能夠得出const成員函數不能夠調用非const成員函數,緣由很簡單,非const成員函數能夠修改爲員變量。
const做用於類的對象、指針或引用時,咱們依然能夠利用const的不可修改屬性,推斷出const對象、指針或引用是不能夠修改內部的成員變量的,所以,咱們就能夠得出const對象、指針或引用不能調用非const成員函數的結論了
4、虛函數