C语言学习笔记——指针(二级指针和n级指针)

今天学习了C语言中的二级指针和n级指针,总结如下:

int a;
int *ptr_a; //一级指针,直接指向变量的指针
int **ptr_ptr_a; //二级指针,指向指向变量的指针的指针
ptr_a = &a; 
ptr_ptr_a = &ptr_a;
//当我们需要给变量a赋值时,可以通过一级或二级指针赋值
*ptr_a = 0;
**ptr_ptr_a = 0;
//这两种方法都会把a赋值成0
//n级指针也像上文一样,如三级指针:***ptr_ptr_ptr_a

另外,二级指针也可通过一级指针实现:

#include <stdio.h>
int main(void)
{
    int a;
    int *ptr_a,*ptr_ptr_a;
    int **ptr;
    a=0;
    ptr_a = &a;
    ptr_ptr_a = (int*)&ptr_a;
    ptr = &ptr_a;
    //    给A赋值有两种方式:
    **ptr = 1;
    //    或
    *(int*)*ptr_ptr_a = 1; //首先我们通过*ptr_ptr_a取得ptr_ptr_a指针指向的地址的值(就是指针ptr_a的值),将其通过(int*)强制转换成指针类型的数据,对转换得到的地址取值,得到变量a的值。
    printf("%d",a);
    return 0;
}

具体两种方法的差别请看我在SF的提问:https://segmentfault.com/q/1010000009742021
个人建议不要用(int)ptr_ptr_a这种形式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容