美文网首页
(c基础)上课笔记 12.15

(c基础)上课笔记 12.15

作者: 霸王小 | 来源:发表于2016-12-15 22:53 被阅读14次
    • 二维数组

    int a[  ][3]={1,2,3,4,5,6,7,8,9};
    int a[  ][3]={1,2,3,4,5};
    int a[  ][3]={0};```
    * ##指针
    * ####指针类型是一种特殊类型
    ```DataType *name
    DataType* name
    DataType * name```
    以上写法都可以
    ----指针和普通变量的区别
     1. 指针:存地址
     2. 普通变量:存值
     3. 指针只能
    ----初始化
    `int *p=NULL;`
    
    ```int a=3;
    int *pa=&a;```
    
    ```int *pb;
    pb=&a;```
    
    ```// int *pc
    //*pc=&a; 这种是错误的!```
    
    ----星号间接访问
    `int *p,a=6;`
    `p=&a;`
    `printf("*p=%d",*p);`
    
    `int *p=NULL;`
    `printf("p=%p\n",p);`
    `//printf("*p=%d\n",*p);   这是错误的,p里面是空地址,*p不能被访问。`
    ----指针本身也有地址,指针变量是存储别的变量的地址。
    ----不能将常量直接赋值给指针变量。
    ----把指针变量赋值给同类型指针是可以的。不同类型的指针如果想赋值必须要强制类型转换(char *p=(char *)p1).
    ----指针的大小:指针不同类型的大小都一样的(32位机为4字节,64位机为8字节)
    * ####指针的类型和指针所指向的类型
    int *pa;(int* pa;)
    double *pd;
    ----指针的类型:去掉变量名之后的部分
    ----指针所指向的类型:去掉指针变量名和其前面的 *
    * ####指针与数组
    ----数组名是一个地址
    int a[5]={1,2,3,4,5};
    int *p;
    p=&a;
    ----(p+1)是等价于(a+1);等价于(a[2])
    ----数组元素的访问
    int a[5]={1,2,3,4,5};
    int *p=&a;
    a[0];a[3];
    *(a);*(a+3);
    *(p);*(p+3);
    p[0];p[3];
    * ####野指针:没有初始化,或者其指向的内存被释放,而且指针没有被置空
    ----危害:造成系统资源的浪费,容易造成未知的致命错误。
    * ####指针地址的运算
    ----自增:指针向高地址方向移动
    ----自减:指针向低地址方向移动
    移动的字节数是指针所指向数据类型的大小。
    * ####概念区分
    int a[3];    为数组,存放三个int型变量
    int *p;   指针,其类型为int型
    int *p[3];  指针数组
    int (*p)[3]  数组指针 又称行指针。
    
    int a[4]={1,2,3,4};
    int *p1[4];
    int (*p2)[4];
    int i=0,j=0;
    for(i=0;i<4;++i)
    {
    p1[i]=&a[i];
    }
    p2=&a;
    printf("%d\n",*p1[2]);//3
    printf("%d\n",(*p1)[1]);//2
    
    
    int array[3][3]={1,2,3,4,5,6,7,8,9}
    int (*pc)[3]=array;
    for(i=0;i<3;i++)
     for(j=0;j<3;j++)
    printf("%4d  ",pc[i][j]);
    
    * #### 二维指针
    DataType **PointorName;
    
    int a=10;
    int *p=&a;
    int **p1=&p;
    
    printf("&a=%p\n",&a);
    printf("p=%p\n",p);
    printf("&p=%p\n",&p);
    printf("pa=%p\n",&pa);
    
    printf("*p=%p\n",*p);
    printf("**p=%p\n",**p);
    
    ##作业:
    1.数组整和
    

    include <stdio.h>

    int main(int argc,char argv)
    {
    char a[10]="hello",b[10]="world",c[16];
    char p=&a,p1=&c;
    int i,n=0,j;
    for(;;)
    {
    if(
    p=='\0')
    break;
    p1=p;
    ++p1;
    ++p;
    ++n;
    }
    p=&b;
    for(;;)
    {
    if(
    p=='\0')
    break;
    p1=p;
    ++p1;
    ++p;
    ++n;
    }
    printf("a[10]={hello} b[10]={world}\n");
    for(i=0;i<n;i++)
    printf("%c",c[i]);
    printf("\n",c[i]);
    return 0;
    }

    2.查找数
    

    include <stdio.h>

    int main(int argc,char argv)
    {
    int a[5]={1,3,5,7,9},i,b=0;
    int p=&b;
    scanf("%d",&
    p);
    for(i=0;i<5;i++)
    if(
    p==a[i])
    {
    printf("已查找到%d,该数在第%d位。\n",
    p,i+1);break;
    }
    else if(i==4)
    printf("查找不到信息!\n");
    return 0;
    }

    3.列出数组中个字符
    

    include <stdio.h>

    int main(int argc,char argv)
    {
    char a[50],
    p=&a;
    int i,n=0,x,sum=0;
    for(;;)
    {
    scanf("%c",&
    p);
    if(*p=='\n')
    break;
    ++p;++n;
    }

        p=&a;
        x=0;
        for(i=0;i<50;i++)
        {
            if((*p>='a')&&(*p<='z'))
                x++;
                ++p;
        }
        n-=x;
        printf("小写字母有%d个\n",x);
        p=&a;
        x=0;
        for(i=0;i<50;i++)
        {
            if((*p>='A')&&(*p<='Z'))
                x++;
                ++p;
        }
        n-=x;
        printf("大写字母有%d个\n",x);
        p=&a;
        x=0;
        for(i=0;i<50;i++)
        {
            if((*p>='0')&&(*p<='9'))
                x++;
                ++p;
        }
        n-=x;
        printf("数字有%d个\n",x);
        p=&a;
        x=0;
        for(i=0;i<50;i++)
        {
            if(*p==32)
                x++;
                ++p;
        }
        n-=x;
        printf("空格符号有%d个\n",x);
        printf("其他符号有%d个\n",n);
    

    return 0;
    }

    相关文章

      网友评论

          本文标题:(c基础)上课笔记 12.15

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