C语言-二级指针

使用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);
}

原文地址:https://www.cnblogs.com/hyq-lst/p/12426351.html

时间: 2024-10-18 05:40:58

C语言-二级指针的相关文章

真正明白c语言二级指针

指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的"值,结果传递"等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... p *p **p                                      --- --- ----                                      | |->| |->| |            

C语言二级指针的介绍和使用

锄禾日当午,学C真TM苦. 指针是C语言中功能最强大的部分,但是也是最难理解的部分. 本文主要介绍二级指针的使用,包括与数组和函数结合的使用,一级指针简单带过. 一.一级指针 一级指针的简单描述 ①一级指针是一种以存储其他变量地址为目的的变量.一个T类型的指针变量(一级指针)就是一个存储了某T类型值变量的内存地址的引用. ②对指针的解引用(也就是*),是获取指针指向的内存空间中存储的值. ③当指针解引用做左值的时候,可以改变指针指向内存空间中存储的值. ④指针指向哪个变量,就将该变量的内存地址赋

C语言 二级指针内存模型

//二级指针第一种内存模型 #include<stdio.h> #include<stdlib.h> //说明:①:类似于int a[5]={0},数组名a是一维数组a中首元素的指针:(我自认为此假设可应用于多维数组与指针) //②二级指针的主要功能是修改一级指针的值 //打印一维数组 int PrintArr(char **pin,int num){ int ERRO_MSG = 0; if (pin==NULL) { ERRO_MSG = 1; printf("pin

C语言 二级指针内存模型混合实战

//二级指针内存模型混合实战 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //将内存模型①和内存模型②的数据拷贝到内存模型③ char ** threemodel(char **pin1,int num1,char (*pin2)[20],int num2,char **pin3,int *pnum3){ if (pin1==NULL

C语言 二级指针内存模型③

//二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> //内存模型详解 //一维数组类型是 typedef int Myarr[5]; Myarr a;(其中Myarr是一维数组类型) //Myarr *p;p是一维数组的指针 //是一维数组的指针的类型是 typedef int(*PArrType)[5]; PArrT

c语言二级指针内存模型

第一种: 指针数组作为输入参数 char *myArray[] = {"aaaaaa", "ccccc", "bbbbbb", "111111"};//指针数组,数组中的每个元素都是指针,int num = 4; void printMyArray11(char **myArray, int num) { int i = 0; for (i=0; i<num; i++) { //printf("%s \n&qu

C语言二级指针的一些理解

最近在重新学习<C和指针>,指针那一章里面的一个例子——在一串字符串中查找特定的字符:版本2中有一句看不太明白,*(*string)++,于是写程序测试.琢磨了一下. 测试程序这样: #include <stdio.h> int main() { char str1[] = "ABCD"; char str2[] = "EFGH"; char *pStrArray[2] = { str1, str2 }; char **pStr1 = pSt

C语言中的二级指针(双指针)

原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7220688 C语言更多查看 C语言使用注意事项(一) C语言使用注意事项(二) C语言使用注意事项(三) 二级指针又叫双指针.C语言中不存在引用,所以当你试图改变一个指针的值的时候必须使用二级指针.C++中可以使用引用类型来实现. 下面讲解C中的二级指针的使用方法. 例如我们使用指针来交换两个整型变量的值. 错误代码如下: 一级指针 [cpp] view plaincopyp

C语言一级指针、二级指针、数组作为参数传递需要注意的若干问题

在C语言编程时,经常会用到指针或数组作为参数传递,但有时结果却并不是自己想要的.下面总结下指针.数组作为参数传递需要的问题. 一级指针与二级指针的使用范围: 一级指针存放变量的地址,指向的值是变量的内容.如int* p={1,2,3}, p=数组的首地址,*p=数组的第一个值: 二级指针存放一级指针的地址,指向一级指针.如int*p ={1,2,3}, int**pp=&p,pp=指针p的首地址,*pp=数组的首地址,**pp=数组第一个值1. 在作为参数传递时什么时候用一级指针,什么时候用二级