• char类型的输出:

scanf(“%d”,&i);//i=49;

char x=i;

printf(“x=%d\n”,x);

printf(“x=’%c’\n”,c);

得到

x=49

x=’1’

即x=49的值,作为整数输出的时候值为49,作为char类型变量的时候,值为1(1的ASCLL码为49),得到‘1’==49,此时1为字符值,49为值;

  • scanf(“%d”,x);//从输入里面读入整数;

scanf(”%c”,x);//从输入里面读入字符值(注意为字符值而不是值);

  • 空格的ASCLL码为32;
  • char类型,字符值的赋值:char = ‘A’;
  • 逃逸字符,用来表达无法打印出来的控制字符或特殊字符,由一个反斜杠”\”开头,后面跟上另一个字符,这两个字符组合起来,组成了一个字符,如”\““,可以打印出双引号“ ”“;
  • 逃逸字符成员:

\b:回退一格,把下一个输出回到上一个的位置上面去,a\bc--->c;类似Backspace;

\t:到下一个表格位;它不代表固定的字符的数量,而是代表固定的字符的位置,使对齐;类似Tab;

\n:换行;

\r:回车;

\’:单引号;

\”:双引号;

\\:反斜杠本身;

  • char word[]={‘H’,’e’,’l’,’l’,’o’,’!’};//字符数组,6个单元;
  • char word[]={‘H’,’e’,’l’,’l’,’o’,’!’,’\0’};//字符串,7个单元,最后的0使得成为字符串,可以进行字符串的操作;
  • 字符串定义:以零结尾的一串字符,零表示字符串的结束,但它不是字符串的一部分;
  • 0和‘\0’是一样的,但是和 ‘0’ 不同;
  • 字符串以数组的形式存在,以数组或指针的形式访问;
  • 0(占4个字节),而 ‘\0’(占1个字节);
  • sting.h中有许多处理字符串的函数;
  • 字符串变量定义:

char *str = “Hello”;

char word[] = “Hello”;

char word[10] = “Hello”;//注意里面有包含结尾的0,即字符串长度占了5+1个位置;

  • 由双引号”“括起来的叫做字符串的字面量,或者叫做字符串的常量;
  • C语言会自动把相邻的两个字符串连接起来成为一个大的字符串;”a“”b“--

-->”ab“;(或者用反斜杠\来表示字符串为写完)(because人的眼睛更容易、倾向于接收窄的内容)(程序员喜欢把屏幕转过来)

  • 通过数组的方式可以用来遍历字符串;
  • 字符指针类型的字符串,字符指针所指向的字符串的地址和字符指针本身的地址不同,字符指针所指向的字符串的地址位于代码段,此段的代码有只读的保护功能,不能对其进行修改;如:char *s=”Hello”,S为const类型,只读;
  • 用指针的方式定义字符串,则不能修改;//char *s=”Hello”;*s地址在别处;
  • 用数组的方式定义字符串,则可以修改;//char s[]=”Hello”;s[]地址在本地;
  • 数组则本地变量的空间是可以自动回收的,字符串则这个字符串不知道在哪里;
  • 指针用处:

(1)用来处理参数,不可修改;

(2)动态分配空间,malloc得到字符串的空间;

  • 构造一个字符串:用数组;
  • 处理一个字符串:用指针;
  • 字符串可以表达为char*形式,char*不一定是字符串,也可能是指向单个字符的指针而已,只有它所指的地方结尾有0,才能说它指的是字符串;
  • 字符串赋值?

char *t = “title”;

char *s;

s= t;

并没有产生新的字符串,只是让指针s指向了t所指的字符串,对s的操作就是对t的操作;

  • 字符串的输入输出:

char string[8];

scanf(“%s”,string);//直到遇到空格、tab或回车为止;

printf(“%s”,string);

  • scanf是不安全的,因为不知道要读入的内容的长度;
  • 安全的方式:char sting[8];  scanf(“%7s”,string);//告诉编译器最多只能读7个字符,超过7个则不要了;(8-1=7)
  • 常见错误:误以为char*是字符串类型;(实际仅仅是定义了1个指针变量)没有对指针进行初始化,char *string;所以不一定每次运行都出错,可能换个电脑就出错了,因为指针指向了有害的内存空间;
  • 本地变量没有默认的初始值;
  • char buffer[100]=””;------>这是一个空的字符串,buffer[0]== ‘\0’;
  • char buffer[]=””;---------->这个数组的长度只有1,即buffer[0]=0;
  • #include<string.h>

//常用字符串函数

(1)size_t strlen(const char *s);----返回字符串的长度,不包括结尾的0;(const使函数不修改传进去的数组)

(2)int strcmp(a,b);------比较两个字符串,相等返回0,不相等则返回值的差值;

(3)strcpy(a,b);----------把字符串b的内容拷贝到a里面去;

(4)strcat(a,b);----------把字符串b的内容拷贝到a的后面,接成1个长的字符串,返回a;(要求a的空间足够大)(安全版本:strncat,strncmp,strncpy)

(5)strchr(const char *s,int c);----从左边开始找c第一次出现的位置,返回指针;

(6)strrchr(const char*s,int c);----从右边开始找c第一次出现的位置,返回指针;

  • 数组名字实际为数组的地址;因此a==b是false,因为两个数组的地址不同;

C语言学习记录_2019.02.23的更多相关文章

  1. C语言学习记录_2019.02.10

    sizeof:给出某个类型或某个变量在内存中占据的字节数:(1个字节8位,即8比特) 格式符 (1)%ld表示数据按十进制有符号长型整数输入或输出. (2)%d表示数据按十进制有符号整型数输入或输出. ...

  2. C语言学习记录_2019.02.07

    C99开始,可以用变量来定义数组的大小:例如,利用键盘输入的变量来定义数组大小: 赋值号左边的值叫做左值: 关于数组:编译器和运行环境不会检查数组下标是否越界,无论读还是写. 越界数组可能造成的问题提 ...

  3. C语言学习记录_2019.02.05

    switch只能判断整数,而分段函数的判别是一个范围,我们无法用整数来表示范围 跟踪语句的方法: (1)debug调试 (2)printf( )语句跟踪 小套路:当循环次数很大时,可以先模拟较小次数的 ...

  4. C语言学习记录_2019.02.04

    逻辑性变量的定义符:bool,在C语言中只有true和false: 定义方式:bool t = true; 逻辑运算符: !:逻辑非 &&:逻辑与 ||:逻辑或 表达区间的错误形式:4 ...

  5. C语言学习记录_2019.02.02

    变量在第一次被使用之前应该赋初值 scanf(“%d”,&price); scanf(“price%d %d”,&price);  scanf中的东西一定是要输入的东西. 定义常量:c ...

  6. C语言学习记录_2019.02.12

    "学计算机一定要有一个非常强大的心理状态,计算机不是黑魔法,都是人想出来的,别人能够想的出来,那么,总有一天,我也能够想的出来." 指针类型的变量就是保存地址的变量. int* p ...

  7. C语言学习记录_2019.02.09

    打印字符串:%s--------printf("%s","abcd"); 打印字符串数组中某一位:%c--------printf("%c" ...

  8. C语言学习记录_2019.02.08

    \n:换行:   \t:制表符,相当于大空格: a[5]={2};<------->a[5]={2,0,0,0,0}; 数组初始化的方法:a[5]={0};即全部初始化为0: 数组初始化的 ...

  9. C语言学习记录_2019.02.06

    break语句的作用:当执行到break,则跳出循环,免去不必要的循环次数,节省时间和资源.-----跳出循环,结束循环: continue:跳过这一次循环剩下的语句,进入到下一轮循环.-----跳到 ...

随机推荐

  1. 网络 TCP三次握手及滑动窗口

    三次握手客户端向服务器发出触发请求syn=1:因为这时还没有得到服务器的回应,所以ack=0服务器接收到客户端的触发请求,回复ack=1,表示已经接收到客户端的请求:同时服务器也向客户端发出触发请求, ...

  2. 关于3d打印

    3d打印技术是20世纪90年代逐渐兴起的一项先进的制造技术.3D打印——three-dimensional printing,简称3dp.又称三维打印或立体打印,最早由美国麻省理工学院于1993年开发 ...

  3. Windows Azure中WebSite 网站, Cloud Service 云服务,Virtual Machine 虚拟机的比较

    在Windows Azure服务平台里,Web Site特点是: 在Windows Azure上构建高度可扩展的Web站点. 快速.轻松部署一个高度可扩展的云环境,并且可以从很小的规模开始. 使用您所 ...

  4. SQL Server 登录名、用户、角色与权限

    1.在SQL Server中,用户和角色是分为服务器级别和数据库级别的 2.服务器级别 登录名:指有权限登录到某服务器的用户,例如超级管理员的登录名是sa: 登录名具体位置在  数据库——>安全 ...

  5. Jboss Jmx-Console和 Jboss web-console安全设置

    1.介绍 如果你暴露你的JBoss服务器通过网络(如通过启动服务器使用选项B 0.0.0.0或者通过改变jboss.bind.address首次出现0.0.0.0在.../jboss/server/d ...

  6. 【Redis】命令学习笔记——字符串(String)(23个超全字典版)

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 本篇基于redis 4.0.11版本,学习字符串( ...

  7. 《鸟哥的Linux私房菜》Chapter11 20180726~20180806

    目录 1.认识Bash这个shell 1.1.硬件.核心与shell 1.2.系统的合法shell和/etc/shells功能 1.3.Bash shell的功能 1.3.1.命令修编功能 1.3.2 ...

  8. python基础_类型_list

    #list 类似数组array,以[]扩起来逗号分隔 a = ['a','b','c'] #常用函数 a.append('c') #在list最后增加一个元素,结果是['a','b','c','c'] ...

  9. Flask 的馈赠

    我们在之前用过装饰器  但是在装饰很多函数的时候  那么这些函数的名字都是装饰器内部函数的名字了怎么办呢? django中有functools进行保留你的函数名字保存 flask也可以使用functo ...

  10. Spring @Autowired注解在非Controller/Service中注入为null

    参考:https://blog.csdn.net/qq_35056292/article/details/78430777 问题出现: 在一个非controller/service类中,我需要注入Co ...