1. 程式人生 > >【 C/C++學習筆記整理】--1.常量的用法、指標與陣列的區別

【 C/C++學習筆記整理】--1.常量的用法、指標與陣列的區別

  • 巨集常量與const常量的區別:
  • 指標與陣列的區別:
  • ++i和i++的區別:
  • 求X的n次冪   pow(X,n);

1.巨集常量與const常量的區別:

巨集常量,如 #define MAX_NUM 65536   本質為字面量 ,沒有資料型別。不佔記憶體。進行文字替換。接續符 \   。巨集常量沒有作用域。

const定義的常量如 const int a本質為變數,是有資料型別的;有const常量後會佔用系統記憶體,開發環境會對const常量進行除錯。

 

  • 2.指標與陣列的區別:

指標的本質:儲存地址值

指標在宣告時,*表示該變數為指標變數。指標在使用是,*表示取該指標所指向的記憶體空間的值

p<->&i    *p<->i

int a;

int * i;

i=&a;

指標變數的值,指的是 i,在這裡是a的地址,型別為int *

指標地址的值,指的是i的地址值,寫作&i,代表記憶體,型別為int **

指標指向物件的值 ,指的是指標i所指記憶體儲存的值,寫作*i,在這裡是變數a的值,型別為int

 

陣列名可以看做常量指標使用

陣列名是陣列首元素的地址

陣列的地址和陣列首元素的地址是相同的,但意義不一樣。

a[n] <=>*(a+n) <==>*(n+a) <==> n[a]

指標可以當做陣列名使用

int a[5]={0};   int * p=a;

陣列作為函式引數時,編譯器編譯成指標,退化為指標

void func(int a[]) ==>void func(int *a) ==>void func(int*a,int a_size)

 

  • 3.++i和i++的區別:

++i 是先把i加1再取i的值;i++是先取i的值,再加1

  • 4.C語言的四捨五入

double b;

b=int((b*10)+0.5)/10.0;//四捨五入到小數點後一位,

四捨五入一位是 *10/10    兩位是 *100/100   後面還要有 .0

printf("%.1f",b);

cout<<setprecision(1)<<b;

 

  •