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

    展开全文
  • 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

    展开全文
  • [笔记]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*是两种不同

    众所周知

    char a = -1;
    unsigned char b;
    b = static_cast<unsigned int>(a);
    

    没有任何问题,因为char 和 unsigned char表示的bit位数一样,然而

    char* a = "123";
    unsigned char* b;
    b = static_cast<unsigned char*>(a);

    无法通过编译

    原因在于char* 和unsigned char*是两种不同的类型

    3.9.1 Fundamental types [basic.fundamental]

    1 Objects declared as characters char) shall be large enough to store any member of the implementation's basic character set. If a character from this set is stored in a character object, the integral value of that character object is equal to the value of the single character literal form of that character. It is implementation-defined whether a char object can hold negative values. Characters can be explicitly declared unsigned or
    signed. Plain char, signed char, and unsigned char are three distinct types. A char, a signed char, and an unsigned char occupy the same amount of storage and have the same alignment requirements (basic.types); that is, they have the same object representation. For character types, all bits of the object
    representation participate in the value representation. For unsigned character types, all possible bit patterns of the value representation represent numbers. These requirements do not hold for other types. In any particular implementation, a plain char object can take on either the same values as a signed char or an unsigned char; which one is implementation-defined.

    使用reinterpret_cast进行强制转换

    展开全文
  • 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

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

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

    千次阅读 2018-09-27 10:38:34
    char为字符类型。unsigned char为无符号字符类型。 二者均是占一个字节,可以直接通过强制转换的方式,把char类型的值转为unsigned char。 当定义变量: unsigned char a; char b; 转换的形式为: a = (unsigned ...
  • C语言 char*和char[]用法

    万次阅读 多人点赞 2019-06-15 16:30:38
    char []定义的是一个字符数组,注意强调是数组。 char * 定义的是一个字符串指针,注意强调是指针。 char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以: 当char *s = ...
  • 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++中的charchar*,char[]

    千次阅读 多人点赞 2020-03-15 20:33:43
    C++中的char是字符的意思,可以用例如'a'来表示,每个字符串string都是由很多个单独的字符char组成。 char*是一个指针,例如:char* s1= "abc",s1是一个指针,指向一个字符串常量“abc",s1这个指针可以被修改,...
  • 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...
  • char 转换char[] 、char[]直接赋值char*

    千次阅读 2018-08-10 16:44:51
    char c = 'A'; char cc[5] = { '\0' }; sprintf(cc, "%c", c);  
  • 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]等都...
  • 深入 char * ,char ** ,char a[ ] ,char *a[]

    万次阅读 多人点赞 2016-09-19 19:52:18
    用一句话来概括,就是 char *s 只是一个保存字符串首地址的指针变量, char a[] 是许多连续的内存单元,单元中的元素为char ,之所以用 char *能达到 char a[] 的效果,还是字符串的本质,地址,即给你一个字符串...
  • 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个字节 ...
  • 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与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默认就是...
  • 深入 char * ,char ** ,char a[ ] ,char *a[] 内核

    万次阅读 多人点赞 2013-02-23 15:34:13
     用一句话来概括,就是 char *s 只是一个保存字符串首地址的指针变量, char a[ ] 是许多连续的内存单元,单元中的元素为char ,之所以用 char *能达到  char a [ ] 的效果,还是字符串的本质,地址,即给你一...
  • c++的char[]和char*的区别

    万次阅读 多人点赞 2018-03-30 18:04:22
    char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc...
  • C/C++编程语言中char** a和char* a[]介绍

    万次阅读 多人点赞 2018-07-09 15:41:48
    本文主要介绍 C/C++ 编程语言中 char** a 与 char* a[] 的作用及两者的区别。 1 char** a 在 char** a 语句中,a 是一个指针,这个指针(即指针 a)指向一块内存地址,该内存地址中存储的是 char* 类型的数据。...
  • C++ float转char,float数组转char数组

    千次阅读 2020-07-10 12:06:41
    char占用1个字节的存储空间;float占4字节的存储空间。即char和float是1:4的大小关系。 #include <iostream> using namespace std; void floatToBytesLittle(float value, unsigned char*cSendBuff, int ...
  • [C++] char, unsigned char, signed char 区别

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

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

    万次阅读 2018-05-19 20:16:36
    #include "pch.h"...int len(char*a) { printf("%s\n", a); return strlen(a); } int main() { char**t; char a[4]; const char*c = "asd"; strcpy_s(a, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,894,273
精华内容 1,557,709
关键字:

char