C语言-二级指针

ericasadun 2020-03-06

使用int **pp_val = &p_val 来定义二级指针

/*
二级指针演示
*/
#include <stdio.h>
int main() {
    int val = 0; 
    int *p_val = &val; 
    int **pp_val = &p_val; //表示p_val的地址 
    printf("pp_val是%p\n", pp_val); 
    printf("p_val是%p\n", p_val); 
    **pp_val = 10; 
    printf("%d\n", val); 
}

在main的输入函数里面,将输入参数的形式变换成char **argv, 使用*(argv + num) 代表字符串的地址

/*
二级指针演示
*/
#include <stdio.h>
int main(int argc, char **argv) {
    int val = 0; 
    for (val = 0;val < argc;val++) {
        printf("%s\n", *(argv + val));
    } 

}

使用void *pp_val = &p_val; 定义方式不同上面的操作, int **p_val = &p_val; 

使用(int **) 进行强制类型转换

/*
指针演示
*/
#include <stdio.h>
int main() {
    int val = 0; 
    int *p_val = &val; 
    void *pp_val = &p_val; 
    ** (int **)pp_val = 10; //将数据进行赋值操作
    printf("%d\n", val); 
}

使用二级指针将一级指针的地址变为NULL

/*
二级指针演示
*/
#include <stdio.h>
void swap(int *p_val, int *p_val1) {
    *p_val ^= *p_val1; 
    *p_val1 ^= *p_val; 
    *p_val ^= *p_val1; 
    printf("val的大小是%d val1的大小是%d\n", *p_val, *p_val1); 
}
void set_null(int **pp_val) {
    *pp_val = NULL; //将数据的地址设置为0 
}
int main() {
    int val = 0, val1 = 0;
    int *p_val = &val; 
    int *p_val1 = &val1; 
    swap(p_val, p_val1);     
    set_null(&p_val); 
}

相关推荐