這裡使用memset來設定陣列初值
##ReadMore##
#include <cstring>
const int X_SIZE = 60;
const int Y_SIZE = 30;
int matrix[X_SIZE][Y_SIZE];
inline void init_matrix() //使用inline加快
{
memset(matrix, -1, sizeof(matrix));
}
工作忙了,事情多了,越發越少,備忘錄就到這個段落吧!
#include <cstring>
const int X_SIZE = 60;
const int Y_SIZE = 30;
int matrix[X_SIZE][Y_SIZE];
inline void init_matrix() //使用inline加快
{
memset(matrix, -1, sizeof(matrix));
}
int m[][] = new int [2][3]; //生成多維陣列
int m[][] = new int[][3]; //不合法
int m[][] = new int[2][]; //合法,生成動態陣列
m[0]= new int[3];
m[1]= new int[5];
/* 若要變動陣列大小,需重新new物件 */
/* 叫用#include <assert.h> 來檢查有無超過範圍 */
int primes[] = {2,3,5,7,11,13,17};
int index = 10;
assert(index < (sizeof(primes)/sizeof(primes[0])));
assert(index >= 0);
std::cout << primes[index] ;
/* 用起來其實很累人,但一些大型source code,會看到在用 */
##ShowAll##
//&運算子的意義為:取得變數的記憶體位址
//*運算子的意義為:取得變數的記憶體值
int *ptr,a;
ptr = &a;
ptr++; //將指標ptr指向變數a的後4個bytes
ptr = ptr - 20; //將指標ptr指向變數a的後20*4個bytes
int *ptr,a[10];
ptr = a+5;
printf(%d %d,*a,*ptr) //會印出陣列a[0]的數值和a[5]的數值
##ShowAll##
void func(int a[])
{
int temp = a[1];
}
int main(void)
{
int a[2]={3,6};
func(a);
}
/*
* 若是多維陣列,第一個陣列要給予數字才能索引
* int a[10][10]; 合法
* int a[10][]; 合法
* int a[][]; 不合法
*/
##ShowAll##