天天看點

c語言指針初認識

1.指針指派

#include<stdio.h>
int main() {
    //建立一個int變量
    int a = ;
    //建立一個int類型的指針變量
    int * p_a;
    //使用&符号取變量a的位址指派給p_a
    p_a = &a;
    return ;
}
           

2.修改指針位址所對應的值

#include<stdio.h>
int main() {
    //建立一個int類型的變量
    int a = ;
    //建立一個int類型的指針變量
    int * p_a;
    //使用&符号取變量a的位址指派給p_a
    p_a = &a;
    printf("a的值是:%d\n",a);
    printf("p_a的值是:%p\n",p_a);
    printf("a的位址是:%p\n",&a);
    printf("p_a的位址是:%p\n",&p_a);
    //*p_a是代表p_a位址對應的值是多少
    printf("p_a位址所對應的值是:%d\n", *p_a);
    *p_a = ;
    printf("修改p_a位址所對應的值後是:%d\n",*p_a);
    printf("--------------------------");
    return ;
}
           

輸出結果:

a的值是:10

p_a的值是:0033F9E8

a的位址是:0033F9E8

p_a的位址是:0033F9DC

p_a位址所對應的值是:10

修改p_a位址所對應的值後是:1000

————————–

3.修改變量所對應的指針位址

#include<stdio.h>
int main() {
    //建立一個int變量num1
    int num1 = ;
    //建立一個int變量num2
    int num2 = ;
    //建立一個int指針變量p_num1并指向num1的位址;
    int * p_num1 = &num1;
    //建立一個int指針變量p_num2并指向num2的位址;
    int * p_num2 = &num2;
    printf("num1的值為:%d\tp_num1的位址是:%p\n",num1,p_num1);
    printf("num2的值為:%d\tp_num2的位址是:%p\n",num2,p_num2);

    //修改p_num2的值為p_num1的值
    p_num2 = p_num1;
    printf("修改後的值:\n");
    printf("num1的值為:%d\tp_num1的位址是:%p\n", num1, p_num1);
    printf("num2的值為:%d\tp_num2的位址是:%p\n", num2, p_num2);
    //對num2進行操作
    *p_num2 = ;
    printf("修改後的值:\n");
    printf("num1的值為:%d\tp_num1的位址是:%p\n", num1, p_num1);
    printf("num2的值為:%d\tp_num2的位址是:%p\n", num2, p_num2);
    return ;
}
           

運作結果:

num1的值為:1024 p_num1的位址是:0033F7B0

num2的值為:2048 p_num2的位址是:0033F7A4

修改後的值:

num1的值為:1024 p_num1的位址是:0033F7B0

num2的值為:2048 p_num2的位址是:0033F7B0

修改後的值:

num1的值為:111000 p_num1的位址是:0033F7B0

num2的值為:2048 p_num2的位址是:0033F7B0

從上面的運作結果可以看出 num2的值是沒有改變的,改變的是p_num2所對應的值,即将p_num2所指向的位址修改為num1所指向的位址。

我們操作p_num2實際是對num1變量進行的操作。

2018年3月25日16:34:47 bigniu原創

QQ:201309512