C语言day3(字符串,字符数组,一级指针的典型用法)

1、1级指针的典型用法

数组

字符串

//1级指针的典型用法
//数组 int a[10]
//字符串
//1、C语言的字符串是以0结尾的字符串
//2、在C语言中没有字符串类型 通过字符数组来模拟字符串
//3、字符串的内存分配  堆 栈 全局区

//字符数组的初始化
int main01()
{
    //1、制定长度
    char buf2[100] = {'a','b','c','d'};//其余置0
//    char buf3[2] = {'a','b','c','d'};//初始化的个数大于内存
    //2、不指定长度
    char buf1[] = {'a','b','c','d'};//buf1是一个数组 不是一个以0结尾的字符串

    printf("buf2:%s\n",buf2);// abcd
    printf("buf2[88]:%d\n",buf2[88]);// 0

    printf("Hello world!\n");
    system("pause");
    return 0;
}

2、怎样用字符串初始化字符数组

strlen() 字符串长度 不包括‘0’

sizeof() 内存块的大小

//怎样用字符串初始化字符数组
//strlen() 长度 不包括0
//sizeof() 内存块的大小
int main02()
{
    char buf3[] = "abcd"; // buf3作为字符数组 应该是5个字节 作为字符串 应该是4个字节
    int len = strlen(buf3);
    int size = 0;
    printf("buf3字符的长度:%d\n",len);// 4

    //buf3 作为数组 数组是一种数据类型 本质(固定大小的内存空间)
    size = sizeof(buf3);
    printf("buf3数组所占内存空间的大小:%d\n",size);// 5

    {
        char buf4[128] = "abcd";
        printf("buf4[100]:%d \n",buf4[100]);// 0
    }

    printf("Hello world!\n");
    system("pause");
    return 0;
}

3、通过数组下标和指针修改内存

//通过数组下标和指针修改内存
int main()
{
    int i = 0;
    char *p = NULL;
    int size1 = 0;
    int size2 = 0;
    char buf5[128] = "abcdefg";
    size1 = strlen(buf5);
    size2 = sizeof(buf5);
    printf("buf5字符的长度:%d\n",size1);// 7
    printf("buf5数组所占内存空间的大小:%d\n",size2);// 128


    for(i = 0; i<strlen(buf5); i++)
    {
        printf("%c ",buf5[i]);//a b c d e f g 
    }
    printf("\n");


    p = buf5;//buf代表数组的首元素的地址
    for(i = 0;i<strlen(buf5); i++)
    {
        p = p + i;
//        printf("%c ",*(p+i));
        printf("%c ",*p);//a b d g why
    }
    printf("\n");
    //[]和*的推导过程  本质相同
    //buf5[i] = buf5[0+i] ==>*(buf5+i)
    for(i = 0;i<strlen(buf5); i++)
    {
        printf("%c ",*(buf5+i));//a b c d e f g 
    }
    printf("\n");
    //指针和内存首地址的区别
    {
        //buf5 = buf5 + 1; // error
        //buf5 = 0x11  // error
        //buf5是一个指针 只读的常量  buf5是一个常量指针
        //why?
        //析构内存的时候,保证内存空间安全释放
    }


    printf("Hello world!\n");
    system("pause");
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值