字符串总结

#include <stdio.h>

int main() {

    char ch = 'A';
    printf("%lu %lu\n",sizeof (ch), sizeof ('A'));
    //字符字面量是整形的

    int val = '1234';
    printf("%#x\n",val);

    return 0;
}

/*
定义字面量时通常会将其分配在字面量池中,这个内存区域保存了组成字符串的字符序列。
多次用到同一个字面量时,字面量池中通常只有一份副本。
这样会减少应用程序占用的内存。
通常认为字面量是不可变的,因此只有一份副本不会有什么问题。
不过,认定只有一份副本或者字面量不可变不是一种好做法,大部分编译器有关闭字面量池的选项,一旦关闭,字面量可能生成多个副本,每个副本拥有自己的地址。

注意 GCC用-fwritable-strings选项来关闭字符串池
*/

const char* str = "hello";
/*
 * 定义一个指向  字符串常量"hello"  首元素地址的指针,所以不能通过指针修改内容
**/

const char* str[] = {"hello","world","\0"};
/*
 * 三个const char*类型组成的字符串
**/

char str[] = "hello";
char str[] = {'h','e','l','l','o','\0'};
/*
 * 定义字符数组str,使用"hello"字符串初始化,包含字符串'\0',所以有6个元素
 * 相当于执行了
 * char str[6];
 * char *strcpy(char *dest, const char *src);
**/
gets():
头文件:#include <stdio.h>
原型:char *gets(char *s);
作用:从stdin获取一行数据,送入s指向的缓冲区中,一行数据结束标志是'\n'或者EOF,存入到s缓冲区时会在数据末尾添加'\0'
返回值:成功返回s的地址,失败返回NULL,
缺陷:无法判断s缓冲是否溢出,增加版本fgets()

puts
strcat
strcpy(strncpy)
strcmp(strncmp)
strlen
strlwr
strupr
strstr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值