字符串基本操作

字符串:
1、C语言的字符串是以0结尾的字符串
2、C语言中没有字符串类型,而是通过字符数组,来模拟字符串
3、字符串的内存分配可以在 堆上、栈上、全局区(很重要)

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//字符数组  初始化
void main61()
{
    // 1 指定长度
    char buf2[100] = {'a','b','c','d'};
    // 1-1 char buf2[100] = {'a','b','c','d'};//如果初始化的个数大于分配内存的个数,编译报错
    // 1-2  后面的buf2[4]--buf2[99]都是0
    // 2 不指定长度,C编译器会自动求元素的个数
    char buf1[] = {'a','b','c','d'}; //buf1是一个数组  不是一个以0结尾的字符串
    char buf11[] = {'a','b','c','d','\0'};  //若要使buf1变成字符串,在末尾人工加上 '\0' 即可
    printf("buf2:%s\n",buf2);
    printf("buf2[88]:%d\n",buf2[88]);
    printf("buf11:%s\n",buf11);
    printf("buf11[4]:%d\n",buf11[4]); 
    //三种0的区别
    printf("%d,%d,%d\n",'\0','0',0); //0,48,0
    system("pause");
    return;
}

//用字符串  来  初始化字符数组
//strlen()  长度不包括0,仅指字符串的大小  
//sizeof()  内存块的大小
void main62()
{
    int size = 0;
    char buf3[]="abcd";  //buf3作为字符数组  应该是5个字节,因为字符串末尾还有'\0',也会存入buf3中
                         //作为字符串,应该是4个字节
    int len = strlen(buf3);
    printf("buf3字符串的长度:%d\n",len);  //4

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

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

    system("pause");
    return;
}

//通过数组下标和指针
void main()
{
    int i = 0;
    char *p = NULL;
    char buf5[128] = "abcdefg";

    for( i=0 ; i<strlen(buf5) ; i++ )
    {
        printf("%c  ",buf5[i]);
    }
    printf("\n");
    p = buf5;  //“buf5代表数组的地址”这句话是错误的
               // buf5代表的应该是数组首元素的地址 
    for( i=0; i<strlen(buf5); i++ )
    {
        printf("%c  ",*(p+i));
    }
    printf("\n");
    system("pause");
    return;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值