位址
每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”
