char 订阅
char用于C或C++中定义字符型变量,只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)。C语言中如int、long、short等不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。 [1] 展开全文
char用于C或C++中定义字符型变量,只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)。C语言中如int、long、short等不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。 [1]
信息
外文名
char
类    型
C/C++整型数据之一
定    义
可容纳单个字符的数据类型
中文名
字符
范    围
-128 ~ +127
charchar数据类型
(1)定义:char型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型。(2)取值范围:char : -2^7 ~ 2^7-1 ;  signed char: -2^7 ~ 2^7-1  unsigned char : 0 ~ 2^8-1而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。 [2]  在C++中,下列程序是可以通过编译的:但如果用或都是不能通过编译的。 [3]  判断编译器的默认char符号方法如下:
收起全文
精华内容
下载资源
问答
  • const char * 、char const *、 char * const 三者的区别

    万次阅读 多人点赞 2017-08-09 15:58:28
    const char *ptr; char const *ptr; char * const ptr; 整理三者之间的区别与联系。 一、const char *ptr; 定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的...

    C/C++ 中关于以下三种定义:

    const char *ptr;

    char const *ptr;

    char * const ptr;

    整理三者之间的区别与联系。

    一、const char *ptr;

            定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改。但是ptr的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对ptr而言,这个值是常量。实验如下:ptr指向str,而str不是const,可以直接通过str变量来修改str的值,但是确不能通过ptr指针来修改。

    gcc编译报错信息:

    注释掉16行ptr[0] = 's';运行正常,运行结果为:

    hello world
    gello world

    另外还可以通过重新赋值给该指针来修改指针指向的值,如上代码中取消7、18行的注释,运行结果为:

    hello world
    good game!!

     

    二、char const *ptr;
            此种写法和const char *等价,大家可以自行实验验证。

     

    三、char * const ptr;

            定义一个指向字符的指针常数,即const指针,实验得知,不能修改ptr指针,但是可以修改该指针指向的内容。实验如下:

    gcc报错信息:

    注释掉17行代码运行正常,运行结果为:

    hello world
    sello world

    展开全文
  • 代码来自c++primer plus 6 第14章c++中的代码重用 ,第552、553页。 按照书中的源码,在visual studio ...const char *" 类型的值不能用于初始化 "char *" 类型的实体 c:\Users\dell\source\rep...

    代码来自c++primer plus 6 第14章c++中的代码重用 ,第552、553页。

     

    按照书中的源码,在visual studio 2017 中编译出现如下错误;

    E0144

    严重性	代码	说明	文件	行	禁止显示状态
    错误(活动)	E0144	"const char *" 类型的值不能用于初始化 "char *" 类型的实体	c:\Users\dell\source\repos\worker0\worker0\worker0.cpp	47	
    

    出现错误的位置:

    char * Singer::pv[] = {"other", "alto", "contralto",
                "soprano", "bass", "baritone", "tenor"};

     Singer::pv 出现的地方:

    class Singer : public Worker
    {
    protected:
        enum {other, alto, contralto, soprano,
                        bass, baritone, tenor};
        enum {Vtypes = 7};
    private:
        static char *pv[Vtypes];    // string equivs of voice types
        int voice;
    ......

    我的解决办法是:强制类型转换。

    char * Singer::pv[] = {(char*)"other", (char*)"alto", (char*)"contralto",
                (char*)"soprano", (char*)"bass", (char*)"baritone", (char*)"tenor"};

    ----

    补充评论指出的另一种解决方法:

    项目属性->C/C++->语言-->符合模式项选择否

    展开全文
  • char和unsigned char

    千次阅读 2019-11-07 23:11:27
    网络编程中一般都用unsigned char,而不用char,是因为把char强制转换成int或long时,系统会进行类型扩展。 #include <stdio.h> int main() { int a = 0xde; //1101 1110 char b = a; unsigned char u_...

             网络编程中一般都用unsigned char,而不用char,是因为把char强制转换成int或long时,系统会进行类型扩展。

    #include <stdio.h>
    
    
    int main()
    {
       int a = 0xde;  //1101 1110
       char b = a;
       unsigned char u_b = a;
       
       printf("b=%x\n",b);
       printf("u_b=%x\n",u_b);
    
    
       char d = 0xde;
       unsigned char c = 0xde;
    
       int i_d = d;
       int ui_d = c;
     
       printf("i_d=%x\n",i_d);
       printf("ui_d=%x\n",ui_d);
          
    
       return 0;
    }

    运行:b=ffffffde
              u_b=de
              i_d=ffffffde     [扩展之后]
              ui_d=de

    字节0xde最高位是1,如果是char类型,在转换成int时,高位全部会扩展成为1;而unsigned char则会全部扩展成0。

    #include <stdio.h>
    
    
    int main()
    {
       int a = 0x2b;  //1101 1110
       char b = a;
       unsigned char u_b = a;
       
       printf("b=%x\n",b);
       printf("u_b=%x\n",u_b);
    
    
       char d = 0x2b;
       unsigned char c = 0x2b;
    
       int i_d = d;
       int ui_d = c;
     
       printf("i_d=%x\n",i_d);
       printf("ui_d=%x\n",ui_d);
          
    
       return 0;
    }

    当字节为0x2b时,因为其二进制最高位是0,所以unsigned char和char的高位都扩展成0,结果一样。 

     

     

    参考地址:https://www.cnblogs.com/etangyushan/p/6871701.html?utm_source=itdadao&utm_medium=referral

    展开全文
  • c++中int与char相互转换

    万次阅读 多人点赞 2019-07-18 16:52:27
    了解int与char相互转换之前,先让我们看一下ASCII码表。 其中数字字符对应的位置为:48 - 57。 二、char转int char转int之前,先将运算式中的每个字符都转换成ASCII码值,再进行计算。 以下代码为例...

    一、ASCII 表

    了解 int 与 char 相互转换之前,先让我们看一下 ASCII 码表。
    这里写图片描述
    其中数字字符对应的位置为:48 - 57。

    二、char 转 int

    char 转 int 之前,先将运算式中的每个字符都转换成 ASCII 码值,再进行计算。
    以下代码为例,其中 i3 的结果符合我们的预期要求。

    char c = '0';
    
    int i1 = c;                    // 48
    int i2 = c - 0;                // 48
    int i3 = c - '0';              // 0
    int i4 = c + '0';              // 96
    

    三、int 转 char

    int 转 char 之前,先将运算式中的每个字符都转换成 ASCII 码值,再进行计算。
    计算出数值后,再据此转换为字符(数值为该字符对应的 ASCII 码值)。
    以下代码为例,其中 c4 的结果符合我们的预期要求。

    int i = 5;
    
    char c1 = i;                  // 越界
    char c2 = i - 0;              // 越界
    char c3 = i - '0';            // 越界
    char c4 = i + '0';            // 5
    

    四、篇外

    如果想要了解 string、char[]、char* 相互转换,请查看我的博文《C++中string、char *、char[]相互转换》。
    链接:https://blog.csdn.net/qq_30534935/article/details/82459448

    如果想要了解 string 与 int 类型的相互转换,请查看我的博文《int、string 类型相互转换》
    链接:https://blog.csdn.net/qq_30534935/article/details/82086379

    展开全文
  • 深入 char * ,char ** ,char a[ ] ,char *a[]

    万次阅读 多人点赞 2016-09-19 19:52:18
    用一句话来概括,就是 char *s 只是一个保存字符串首地址的指针变量, char a[] 是许多连续的内存单元,单元中的元素为char ,之所以用 char *能达到 char a[] 的效果,还是字符串的本质,地址,即给你一个字符串...
  • oracle中的to_char();  str_to_date(date,'%Y-%m-%d') -------------->oracle中的to_date();  %Y:代表4位的年份  %y:代表2为的年份  %m:代表月, 格式为(01……12)  %c:代表月, 格式为(1……12)  %d:...
  • C语言charchar*赋值

    万次阅读 2018-05-16 15:50:39
    1.单字符char a=’1’; 2.多字符char a[5]=”1133”; 3.字符数不确定char a[]=”1132131233”; 4.char* str = new char[10];str = “2131”; 5.char* str = “12312”; 6.char* str = new char[10];strcpy(str,...
  • char* char[]

    千次阅读 2019-03-21 15:24:14
    C++判断char*的指向 char *a = "Peter"; char b[] = "Peter"; char *c = new char[6]; strcpy_s(c, 6, "Peter"); 这里a指向常量区 b指向栈区 c指向堆区 //main.cpp int a=0; //全局初始化区 char *p1; //...
  • C++中的char、signed char、unsigned char

    千次阅读 2019-03-15 00:44:25
    转载,记录一下C++中char, signed char, unsigned char的区别 感谢原作者的辛勤劳作:https://blog.csdn.net/sinat_20265495/article/details/51733015 1,三者之间关系 1.ANSI C 提供了3种字符类型,分别是char...
  • C语言中char、short、int、long各占多少字节

    万次阅读 多人点赞 2018-04-15 14:28:12
    char:1个字节 short:2个字节 int:4个字节 long:4个字节 以下是windows操作系统,32位机下的代码测试结果(32位机中,指针占4个字节,如变量e): windows操作系统,64位机中, char:1个字节 ...
  • char 转换char[] 、char[]直接赋值char*

    千次阅读 2018-08-10 16:44:51
    char c = 'A'; char cc[5] = { '\0' }; sprintf(cc, "%c", c);  
  • C++中string、char *、char[]、const char*的转换

    万次阅读 多人点赞 2018-03-16 13:21:56
    3) char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。 4) string转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数 5) string转char*:
  • char与byte的区别

    万次阅读 多人点赞 2012-07-21 16:18:02
    很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:  byte 是字节数据类型...
  • charchar*、char**数组

    千次阅读 2017-02-19 15:43:56
    平时都用的是char数组,基本忘记了char*数组和char**数组该怎么用了 char s1[10]; s1[0] s1[1]等都是char s1是char*,等同于&s1[0]   char*s2[10]; s2[0] s2[1]等都是char* *s2[0] *s2[1]等都...
  • C语言 char*和char[]用法

    万次阅读 多人点赞 2019-06-15 16:30:38
    char []定义的是一个字符数组,注意强调是数组。 char * 定义的是一个字符串指针,注意强调是指针。 char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以: 当char *s = ...
  • char与signed char, unsigned char的区别?

    万次阅读 多人点赞 2016-06-22 11:35:36
    今天有一个困扰的问题,就是char与signed char, unsigned char这三者的区别。 二、三者之间关系 1.ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char。而不是像short、int一样只有两种(int默认就是...
  • C语言 const char 转换为 char

    千次阅读 2019-10-30 16:16:28
    const char* 不能直接转换为char *类型 因此需要新开辟一块内存,将字符复制过去,所以可以用strcpy函数实现 例如: const char *msg = "hhhh"; char *key = new char[strlen(msg)+1]; strcpy(key, msg); ...
  • [笔记]char* 转 unsigned char*

    万次阅读 2017-10-20 00:55:04
    众所周知 ...没有任何问题,因为char 和 unsigned char表示的bit位数一样,然而 char* a = "123"; unsigned char* b; b = static_cast(a);无法通过编译 原因在于char* 和unsigned char*是两种不同
  • unsigned charchar

    千次阅读 2015-01-29 12:35:48
    char 和 unsigned char是无符号的 两者都作为字符用的话是没有区别的,但当整数用时有区别:  char 整数范围为-128到127( 0x80~0x7F),  而unsigned char 整数范围为0到255( 0~0xFF ) 多数情况下,...
  • char数组和char*初始化

    万次阅读 2017-12-27 15:55:54
    char*动态分配: 用c语言中的(char*)malloc(sizeof(char)*n),或c++中的new char(n); char数组初始化 初始化 char str[10]="Hello"; char str[10]={'H','e','l','l','o','\0'}; char str[10]...
  • [C++] char, unsigned char, signed char 区别

    千次阅读 2018-05-15 17:16:47
    char signed char unsigned char 如果用于文本,则使用未加限定的char, 类似于 'a', '0', 'abcde' 等。它也可以是一个值,但是是当做无符号还是有符号数没有指定。 如果将字符类型用作数字,那么: ...
  • char与signed char, unsigned char的区别

    千次阅读 2016-03-07 10:36:15
    今天有一个困扰的问题,就是char与signed char, unsigned char这三者的区别。 二、三者之间 1.ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char。而不是像short、int一样只有两种(int默认就是...
  • C语言字符串 char* char[] char**与char* []

    万次阅读 2018-07-19 23:49:21
    char * s = "hello"; 等价于 char str []= "hello"; 原因是常量字符串在编译器眼里就是它第一个字符的地址。 如图所示,复现的时候需要注意s的值会变,s是一个指针变量,整形,它的值就是...
  • unsigned charchar 转换

    千次阅读 2017-01-04 10:24:31
    方法一:不转换为char,转换为QString类型:unsigned char* code1; QString qstr=""; qstr=qstr.append(code1);方法二:强制转换unsigned char *packet; char *p=(char*)packet;方法三:内存拷贝void *memcpy...
  • 中的*是指针变量定义中的标识,*跟随的是char , 即:这里是定义一个指针变量p, 其存储的数据类型是char *类型,即p本身存储的是char *类型(地址)数据。 char *p ; //定义指针变量,未初始化 打代码时发现如下两...
  • C++ char和unsigned char

    千次阅读 2017-03-05 14:34:27
    signed char 和 unsigned char 的区别 1. 如果它们只是作为字符处理,那么是没有区别 2. 只有当它们被作为数字值处理的时候,考虑到符号位扩展的时候是有区别的  char ch1 = -8;  unsigned char ch2 = -8;...
  • C语言 char 和 signed char的区别

    千次阅读 2019-03-31 17:31:49
    在STM32项目的开发过程遇到一个奇葩的问题,测试代码如下: ... char _char =-1; if(_char!=-1) { pr_dbg("_char!=-1\r\n"); } else { pr_dbg("_char!=-1\r\n"); } 结果输出: 1048 [dbg] main ...
  • char 与 unsigned char的本质区别

    千次阅读 2018-06-04 13:03:09
    在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别。 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 533,023
精华内容 213,209
关键字:

char