第七章 指標

      在〈第七章 指標〉中尚無留言

位址

每byte都有一個位址
& : 取址運算子,陣列本身就是參考型別,本身就是位址,不需取址

int main(){
   int b[]={1,2,3};
   int a=0;
   printf("%08x\n", &a);
   printf("%08x\n", b);
}

指標

指標變數存放記憶体位址

宣告 : int *ptr;

int a=10;
int *ptr=&a; //ptr就可以存取變數a的值
*ptr=20; //*變成存取值,稱取值運算子
printf(“a=%d\n”, a);
printf(“*ptr=%d\n”, *ptr);

*&aç同樣是取值

ptr可隨時變換,比如ptr=&a, ptr=&b;

int *ptr;
*ptr=50;//不會錯誤,但會當機,因為ptr尚未指定指向的空間

需改為如下 :
int *ptr;
ptr=new int;
*ptr=50;

或合併成 int *ptr=new int(50);

一維陣列與指標

陣列可以用指標存取

int a[]={1,2,3,4};
printf(“a[1]=%d\n”, *(a+1));//加1表是加一個陣列元素,不是加1byte

陣列參數

🔒 更多內容,請登入會員繼續閱讀。

立即登入

new delete運算子

int *ptr=new int;使用完後,一定要delete ptr; 否則此空間會一直佔住不能用
int *ptr=new int[3]{0};初始化為0

不等長度的char

🔒 更多內容,請登入會員繼續閱讀。

立即登入

main函式中的參數

int main(int argc, char *argv[]){
   for (int i=0;i<argc;i++){
      printf("%s\n", argv[i]);
}

在命令列輸入 test.exe abc def 123
則argc為4
argv[0]= “test.exe”
argv[1]= “abc”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *