c – char *和int *之间的区别
发布时间:2020-12-16 05:50:01 所属栏目:百科 来源:网络整理
导读:char *和int *之间有什么区别?当然,他们有不同的类型,但是我可以写什么 char* s1="hello world"; 如 "hello world" 它不是一个字符,它是一个字符数组,我不能写 *s1 如 char* s1 = {'h','e','l','o',' ','w','r','d'}; 和 int* a = {2,3,1,45,6}; 有什么不同
char *和int *之间有什么区别?当然,他们有不同的类型,但是我可以写什么
char* s1="hello world"; 如 "hello world" 它不是一个字符,它是一个字符数组,我不能写 *s1 如 char* s1 = {'h','e','l','o',' ','w','r','d'}; 和 int* a = {2,3,1,45,6}; 有什么不同? 解决方法
很简单:将字符串字面值,即“foobar”编译为存储在程序静态部分(即存储所有常量)并被空终止的字符数组.然后,将其分配给变量,只需将指针指向该变量的内存.例如:const char * a =“foo”;将“foo”存储到a的地址.
简而言之,字符串常量已经将存储器存储在其中. 相比之下,使用初始化器列表初始化指针(即,花括号内的元素列表)并没有为指针定义.非正式地,初始化器列表的问题与字符串文字相反,是它不会“带来自己的内存”.因此,我们必须提供初始化程序列表可以存储其字符的内存.这是通过声明数组而不是指针来完成的.这个编译很好: char s1[11]={'h','d'} 现在,我们通过将s1声明为一个数组,提供了要存储字符的空间. 请注意,您可以使用指针的括号初始化,但是,例如: char* c2 = {nullptr}; 然而,虽然语法似乎相等,但这完全不同,这被称为均匀初始化,并且将使用nullptr简单地初始化c2. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |