c語言學習7-------指針與地址


指針與地址

指針是程序數據在內存中的地址,而指針變量是用來保存這些地址的變量。

定義指針變量

C語言中,定義變量時,在變量名 前 寫一個 * 星號,這個變量就變成了對應變量類型的指針變量。必要時要加( ) 來避免優先級的問題。

取地址

既然有了指針變量,那就得讓他保存其它變量的地址,使用& 運算符取得一個變量的地址。

指針變量的大小:32位操作系統占4個字節,64位操作系統占8個字節

指向數組元素的指針 支持 遞增 遞減 運算。(實質上所有指針都支持遞增遞減 運算 ,但只有在數組中使用才是有意義的)

將a的值修改成為5

&n為傳出參數,通過scanf函數內部往外部參數n中寫入一個值。

#include <stdio.h>#define log(func){\
    printf("%s = %d\n",#func,func);\
}
​
struct Data {
    int x, y;
};
​
int main() {
    struct Data a[2],  *p = a;
    a[0].x = 0, a[0].y = 1;
    a[1].x = 2, a[1].y = 3; // a[1].x
    log((a + 1)->x);
    log((p + 1)->x);
    log((&a[0] +1)->x);
    log((&p[0] + 1)->x);
    log(p[1].x);
    log((*(a + 1)).x);
    log((*(p + 1)).x);
    log((*(&a[0] + 1)).x);
    log((*(&p[0] + 1)).x);
    return 0;
}

函數指針

函數返回值類型 (* 指針變量名) (函數參數列表);

Main函數參數

int argc 命令行參數個數,

argv存儲命令行參數內容

env當前環境變量,二維字符數組

#include <stdio.h>

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

int main(int argc, char *argv[], char *env[]) {
    output(argc, argv, env);
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM