==========================
第11章 字符和字符串函数
==========================
震惊:
字符串常量属于静态存储类,常量引号中的内容作为指向该字符串存储位置的指针:
printf("%s, %p, %c\n","we","are",*"young!");语句执行的结果如下:
we, 0x4005e4, y

字符串的数组声明:
char str[] = "string A";  <=>  char[] str = {'s','t','r','i','n','g',' ','A','\0'};
注意右边的声明最后需要加上‘\0’标志,如果不加,得到的就是一个字符数组而不是字符串
但实验证实不加的话,以'%s'的方式仍然能够输出,不会多输出;
根据上面条件,有下面等式成立:
str == &str[0],    *str == str[0] =='s',    *(str+1) == str[1] =='t'
本质仍是数组,所以指针的一套可以用:
char str[] = "String A!";        <=>    char *ptr = "String A!";
这个不能进行++str操作,可进行*(str+i)操作      而这个可以进行++str操作,也可进行ptr[i]操作
本质原因前者是地址常量,后者是指针变量

数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是将字符串的地址赋值给指针变量
============================================================
#include <stdio.h>
int    main(void)
{
    char *ptr = "String";
    //ptr[0] = 'A';        //编译器偷懒可能导致String只有一个拷贝,公用品不能单改
    printf("String ");
    printf("%s %s\n",ptr,"String");
    return 0;
}
============================================================

char *str[5]    约等于    char[X][5],两者用法大致相同,但存储原理不同

gets()函数不会检查输入是否大于分配的存储空间,所以更安全的做法是使用fgets()函数,但也更麻烦。

不加换行符的puts()代码;
void putss(const char * string)
{
    while(*string!='\0')    //如用while(*string),也可,最简洁,略有不同
        putchar(*string++);
}

void putss(const char * string)
{
    int i = 0;
    while(string[i]!='\0')
        putchar(string[i++]);
}

C语言字符和字符串随记的更多相关文章

  1. C语言字符,字符串,字节操作常用函数

    strlen 这个函数是在 string.h 的头文件中定义的 它的函数原型是 size_t strlen( const char ); size_t 是一个无符号整型,是这样定义的 typedef ...

  2. C 语言字符 和字符串输出

    int main(void){ char ch; char str[80]; printf("Input a string: ");    //先输入字符串 gets(str);/ ...

  3. Swift语言指南(十)--字符串与字符

    原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...

  4. C语言中的字符和字符串

    C语言在中常常出现字符和字符串,而一串字符或者字符串其实就是数组 字符数组的定义 char arr[]={'h','e','l','l','o','\0'}; 而定义字符串: char arr1[]= ...

  5. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

  6. C 语言实例 - 查找字符在字符串中出现的次数

    C 语言实例 - 查找字符在字符串中出现的次数 C 语言实例 C 语言实例 查找字符在字符串中的起始位置(索引值从 开始). 实例 #include <stdio.h> int main( ...

  7. C语言之“字符”与“字符串”之间的区别解析

    在C语言中,“字符”与“字符串”之间,是有区别的.这一篇文章中,我们将介绍一下,在C语言中的“字符”与“字符串”,它们之间的区别. 首先,一个很明显的区别是: “字符”,使用单引号作为定界符,而“字符 ...

  8. sql语言:如何查询字符串某个字符的个数?

    sql语言:如何查询字符串某个字符的个数? 这语句太精彩了! select len('05011045')-len(replace('05011045','0',''))

  9. Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串

    第四章 数学函数.字符和字符串 4.2 常用数学函数 方法分三类:三角函数方法(trigonometric method).指数函数方法(exponent method)和服务方法(service m ...

随机推荐

  1. CDZSC_2015寒假新人(1)——基础 f

    Description An inch worm is at the bottom of a well n inches deep. It has enough energy to climb u i ...

  2. iOS Dev (21) 用 AVPlayer 播放一个本地音频文件

    iOS Dev (21) 用 AVPlayer 播放一个本地音频文件 作者:CSDN 大锐哥 博客:http://blog.csdn.net/prevention 前言 这篇文章与上一篇极其相似,要注 ...

  3. 《javascript权威指南》阅读笔记 1

    3.1-3.5 3.1 数字 3.1首先声明了在JS中的数字是不区分整数值和浮点数值的.其次给出了js浮点类型表示的范围:最大值是±1.7976931348623157×10^308,最小值±5×10 ...

  4. YUM更换源--yum找不到安装包(转)

    公司提供的CentOS VM中,/etc/yum.repos.d 下 只有一个build.repo,其中提供的yum 源只有公司内部的几个源,很多包在这些源中都找不到.于是要添加别的源,下面的帖子中介 ...

  5. linux shell if语句

    #!/bin/bash read -p "please input Y/N" keyWord if [ "$keyWord" == "Y" ...

  6. Nginx 配置指令的执行顺序(六)

    前面我们在 (五) 中提到,在一个 location 中使用 content 阶段指令时,通常情况下就是对应的 Nginx 模块注册该 location 中的“内容处理程序”.那么当一个 locati ...

  7. 去掉ExpandableListView的箭头图标

    到ExpandableListView时有个箭头图标系统自带的在你自定义布局也不能去掉只要设置一个属性即可,如下: settingLists.setGroupIndicator(null);  ~~~ ...

  8. 经典CSS颜色混合模式

    转自:http://www.webhek.com/css-blend-mode/ 注意:只有使用最新版的谷歌浏览器.火狐浏览器,才能正确的显示本文中的演示. Photoshop里最没有用处的一种功能— ...

  9. mode(思维,注意内存)

    mode Time Limit:1000MS     Memory Limit:1024KB     64bit IO Format:%lld & %llu Submit Status Pra ...

  10. 在SQL Server中如何快速查找DBCC命令和语法?

    DBCC命令非常好用,但是命令很多语法就很多,如何快速记忆呢?是否都要背下来.其实不用,只要能知道每个命令的作用并且记住DBCC HELP命令就可以了. --查找所有的DBCC命令 DBCC  HEL ...