欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c语言--变量指针和指向变量的指针---部分知识点总结

程序员文章站 2022-07-12 15:37:11
...
  1. 不能将一个整数直接赋给指针变量作为地址

  2. 改变函数形参的值,不会改变对应实参的值

  3. //正确写法
    int n,*p=NULL;
    p=&n;
    scanf("%d",p);
    printf("%d\n",*p);
  4. “&”:取地址运算 ; “*”:指针运算符,是定义指针变量的说明符

  5. “%le”意思是用科学计数法输出的double数据。 其中%l表示双精度数据double,e表示科学计数法,也就是指数形式。

  6. p=&k就是把k的地址取出来后赋值给p。. int *p=&k;就是定义一个整型指针,并且给它初始化k的地址

  7. *p++;//等价于*p; p++;
  8. int* p1 ; int** p2; int*p3;//都是合法的定义指针变量的语句
    p=NULL;和p=0;或p='O';等价;
  9. 指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值

  10. 语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-"空"

  11. 所谓函数类型是指函数返回值的类型。在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数;

  12. #include <stdio.h>
    main()
    {
        char* p1 =0;
        int* p2=0;
        double* p3 =0;
        printf("%d,%d.,%dIn", sizeof(p1), sizeof(p2), sizeof(p3));//值为4,4,4
    }
    /*sizeof用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节 数。
    专门用来存放变量地址的变量,称为“指针变量”。所有类型的指针变量都是地址,所占字节数均为4*/
  13. #include <stdio.h>
    main()
    {
        int a = 0.*ptr;
        ptr = &a;
        *ptr = 3;
        a =(*ptr)++;
        printf("%d,%din", a.*ptr);//程序运行后的输出结果是4,4
    }
    /*程序执行过程为:定义整型变量a=0与指针ptr
    ,使指针指向变量a。对指针指向的变量进行赋值=3,将指针所指向变量加1,并赋值给a=4,此时指针依然指向变量a,输出a与指针指向的变量值: 4,4,*/
  14. #include <stdio.h>
    int change(int*data)
    {
        *data = *data % 2;//注意,此处data指向的数值对1求余会改变实参指褚向的值
        return (*data)+ 1;//重新赋给data指向的变量,然后将ta加a指向的变量值与1的和返回
    }
    main()
    {
        int data = 12;
        change(&data);  //程序第一次调用change()函数,传入实参data的地址,将data   的值修改为0 (12%2=0),此时输出data的值是0
        printf("%d," , data);
        data = change(&data);//再次调用tange()传入data的地址,将data的值修改为0     (0%2=0),然后将返回值1重新赋给主函数变量data,所以此时输出data的值是1,
        printf("%d," , data);
    }//程序运行后的输出结果是  0,1

  15. void fun (char *p2, char *p1)
    { 
        while ((*p2=*p1)!= '\0')
               { 
                   p1++; 
                   p2++;
               }
    }
    //函数的功能是 接收两个字符指针p2、p1,while循环每次将p1指向的字符赋给p2指向的字符,然后判断p2指向的字符是否是空字符'\0',若不是,p1和2顺序后移一位,直到p1和p2指向空字符,
    所以fun()函数的功能是将p1指向的字符串赋值到p2指向的内存空间中
  16. 当指针指向某个变量时,才能向其中写入数据;

  17. 指针除了指向变量外,还可以赋值为NULL,表示未指向的任何地址,此时不能写入数据,另外指针必须有基类型,只能指向基类型相同的变量

  18. 指针只能与一个整数进行运算,即移动指针,两个指针不能运算

  19. p1 =p2 =(int *)calloc(5,sizeof(int));
    //程序定义整型指针变量p1,p2,调用calloc函数分配5个整型长度的内存空间赋给p1,p2,所以p1,p2指向的是同一段内存的首地址
  20. 若定义void*p;,则p可以保存任何内存地址;

  21. void*为无类型指针,使用时,可以强制转换为任意的指针类型,

相关标签: c语言 c++