美文网首页
SQSH1616 12-15 C基础

SQSH1616 12-15 C基础

作者: 彳亍的心 | 来源:发表于2016-12-15 19:22 被阅读0次

一.数组

1.二维数组

行可以省略,列不可以省略

2.指针

(1)指针类型是一种特殊类型

      DataType *name;
      DataType* name;
      DataType * name;
      DataType :数据类型
      name:变量名
      指针和普通变量的区别;
           指针:存地址
           普通变量:存值
      指针只能保存与其相同类型的地址
      int *p;只能保存int型地址
      char *pc:只能保存double型地址
      double *pc:只能保存double型地址

(2)初始化

        int *p = NULL;//ok
        //NULL:表示空地址,是一个宏
        int a = 3;
        int *pa =&a;//ok
        
        int *pb;
        pb = &a;//ok
        
        int *pc;
        *pc = &a//error
        //adress
        printf("&num = %p\n",&num);
        printf("pb = %p\n",pb);
        //元素的访问
        printf("num = %d\n",num);
        //*pb是值,不是地址,pb是地址
        printf("*pb = %d\n",*pb);

(3)地址的访问

      *:间接访问运算符
      int a = 10;
      int *pb;
      pb = &a;    //ok
      变量名    变量地址     存储
      a          0x00012     10
      pb         ox00034      0x00012
      *pb:取指针对应内存里的值

(4)可以把指针赋值给同类型指针

(5)不同类型指针的大小

    64位机:  8
    32位机:  4

(6)指针类型和指针所指向的类型

   int *pa;
   double *pb;
   指针的类型:int *,double *,即去掉变量名之后的部分。
   指针所指向的类型:int,double,即去掉指针变量名和其前面的*。

(7)指针与数组

     数组名是一个地址,
     数组元素的访问
     int arr[5] = {1,2,3,4,5};
     int *pa = arr;
     
     arr[0];     arr[3];
     *(arr);    *(arr+3);
     *pa   ;    *(pa+3);
     pa[0] ;    pa[3]; 

(8)野指针

       没有初始化,或者其指向的内存被释放,而指针没有被置空;
  危害:
        造成系统资源浪费,容易造成未知的知名错误

(9)指针地址的运算

        指针的自增和自减
        自增:指针向高地址方向移动
        自减:指针向低地址方向移动
           移动的字节数是指针所指向的类型的大小
        注:指针相减,表示两指针的距离,相加无意义
    指针加减一个常量表示地址往高字节或地字节方向移动
    常量值*sizeof(对应数据类型)个字节!

(10)概念区分

    int arr[3];
    //数组,大小为3,存放三个int变量
    int *pb;
    //指针,其类型为int *型
    int *arr[3];
    //指针数组
    int (*pa)[3];
    //数组指针,又称行指数

2.二级指针

  DataType **PointorName;
  int a = 10;
  int *q = &a;
  int **p =&q;
  *p=a;
  **p=*q=a
  
  int **p;
  //定义一个指针,或地址进行操作时,一定要确定指针的方向

相关文章

  • SQSH1616 12-15 C基础

    一.数组 1.二维数组 2.指针 (1)指针类型是一种特殊类型 (2)初始化 (3)地址的访问 (4)可以把指针赋...

  • SQSH1616 12-12 C基础

    丹尼斯*里奇C语言的优缺点优点:简单,使用广泛...缺点: 不严谨...一:C基本语法1.C的引入#include...

  • SQSH1616 12-14 C基础

    1.if~else配对问题else 总是与离它最近的if配对2.循环(1)for(表达式1;表达式2;表达式3)执...

  • SQSH1616 12-13 C基础

    1.类型转化(1)隐式转化:当赋值号两边类型不同时,自动转化为精度较高的类型5/3 = 1.000009.1200...

  • SQSH1616 12-21 C基础

    reviewstruct student{int ID;char name[32];//next存储的是下一个结点...

  • SQSH1616 12-16 C基础

    1.冒泡排序 例如:#include int main(){int arr[5]= {11,45,2,66,34}...

  • SQSH1616 12-19 C基础

    一函数 1.函数的基本概念 函数就是把代码中功能相似并且独立的代码单独封装成一个整体; (1)函数优点 提高代码的...

  • SQSH1616 12-20 C基础

    一。复杂结构类型 1.结构体 2.结构体变量的初始化 (1)初始化1 (2)初始化2 (3)初始化3:生命结构体时...

  • MySQL基础回顾(12-15)

    十二、汇 总 数 据 1、AVG() 返回某列的平均值: SELECT AVG(p_price) AS avg_...

  • 2021-06-20-缓进

    平凡而不平静的一周 本周计划: 完成12-15章课件、复习 12-15高频考点、12-15客观题,订正尽量完成,正...

网友评论

      本文标题:SQSH1616 12-15 C基础

      本文链接:https://www.haomeiwen.com/subject/rhugmttx.html