• C指针2


    #include <stdio.h>
    #include <stdlib.h>

    char name[10] = "lisa";//内容:'l' 'i' 's' 'a' 0 0 0 0 0 0

    int ko[10] ;
    //函数声明
    void reset1(char *p);
    void last_lisa();
    int i;
    int main(void){
    /*
    * 1.数组未赋值的内容默认为0
    * 2.数组元素在存储空间是连续的,地址根据数据类型来逐渐递增
    * */

    for(i=0;i<10;i++){
    printf("%d ",name[i]); //数组未使用到的全部会以0方式输出

    printf("字节:%d ",name[i]);
    printf("地址:%d ",&name[i]);
    }

    puts("测试:---int----");

    for(i=0;i<10;i++){
    printf("%d ",ko[i]); //数组未使用到的全部会以0方式输出

    printf("字节:%d ",ko[i]);
    printf("地址:%d ",&ko[i]);
    puts("");
    /*
    * 数组名就是数组的地址,也是数组首元素的地址
    * */
    printf("name = %d &name = %d ",name,&name);
    char b = 10;
    int c = 10;
    /*
    * 指针远算是根据类型建行实际地址值的远行
    * */
    printf("%d %d ",&b,&b+1);
    printf("%d %d ",&c,&c+1);


    //reset(name+3);//数组名就是首元素的地址
    //reset(&name+3);//&数组名+3 相当于整个数组名中的地址都+3(就是加了30个字节)
    printf("字节:%d ",name[3]);

    last_lisa();

    }

    }

    void reset1(char *p){
    printf("地址:%d ",p);
    *p = 0;

    }

    void last_lisa(){
    //方法1:使用数组下标
    name[6] = 'l';name[7] = 'i';
    name[8] = 's';name[9] = 'a';
    //字符串是为结束的,后面的内容是不会打印的
    puts(name);
    for(i=0;i<10;i++)
    {
    printf("%c",name[i]);

    }
    puts("");
    //方法2:使用指针

    *(name+6) = 'l'; *(name+7) = 'i';//*(数组名+第几位) = ‘要修改的内容’ 修改数组中的内容
    *(name+8) = 's'; *(name+9) = 'a';
    for(i=0;i<10;i++)
    {
    printf("%c",name[i]);

    }
    puts("");
    //方法3:使用strcpy字符串复制
    strcpy(name+6,"judy");//第一个字母放在指定位置,后面会紧跟着覆盖
    for(i=0;i<10;i++)
    {
    printf("%c",name[i]);

    }


    }

  • 相关阅读:
    C#中ref和out的原理
    C#托管堆和垃圾回收(GC)
    C#类成员初始化顺序
    HTTP认证之摘要认证——Digest(二)
    HTTP认证之摘要认证——Digest(一)
    设计模式之建造者模式——Builder
    Shader专题:卡通着色(一)控制颜色的艺术
    小班同学学习经历分享(一)游戏程序员成长札记
    UniRx精讲(二):独立的 Update &UniRx 的基本语法格式
    UniRx精讲(一):UniRx简介&定时功能实现
  • 原文地址:https://www.cnblogs.com/hzp0619/p/8744003.html
Copyright © 2020-2023  润新知