前言 指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作 为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。
char []定义的是一个字符数组,注意强调是数组。 char * 定义的是一个字符串指针,注意强调是指针。 char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以: 当char *s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为”written”。 当用cha...
在C语言中,char*和char**都是字符指针,但它们之间存在一些差异。char*表示指向字符的指针,而char**表示指向字符指针的指针。这两者之间的关系可以通过以下例子来解释: ```c ch...
1、string为普通类型,不是数组型,只是其内容为字符串; 2、’a’和”a”的区别:’a’为字符,”a”为字符串;单引号只能定义一个字符,双引号可以定义多个字符,即字符串。 3、指针可以通过加减、自加减改变其值,数组不可以。 4、以数组定义的字符串可以修改其中的字符,以指针定义的字符串不能修改其中的字符。
背景:初学C语言时,由于对于char家族一系列类型掌握不佳,遇到char*, char**, char*[]时总是晕头转向。今特地编写用例,详细辨析其中的区别 环境:Win10 64位 语言:C 编译器:gcc (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0
反过来,实参可以是char[],形参可以是 char *也是可以的。 存在即合理,char *和char[]肯定是有本质的不同。 不同点 1. char*是变量,值可以改变, char[]是常量,值不能改变。 比如: char*a="string1";charb[]="string2";a=b;//OKa="string3";//OKb=a;//报错!左边操作数只读b="string3"//报错...
反过来,实参可以是char[],形参可以是 char *也是可以的。 2、他们都是以'\0'结尾;(注意不同的求长度函数对他们的处理不同,有的计算'\0',有的没有计算); strlen()是取字符串除去结尾符 “\0” 的长度; sizeof()是包含‘\0’的长度 存在即合理,char *和char[]肯定是有本质的不同 ...
char dont [] = {'A','B','C'};这样编译器会不知道从哪里停止,直到找到内存中最近的一个空字符,好在内存中空字符很多,不会花费太长时间。二、字符数组 字符数组与字符串数组的最大区别是处理范围不同,字符串数组遇到空字符便结束,而字符数组可以根据编程者的需要控制处理的长度。但是和字符...
招聘程序员面试中经常碰到分不清char *和char []区别的候选者,统一认为他们不都是字符串吗?特别是近年刚毕业的学生,甚至有些还是计算机科班毕业生也解释不太清楚。 究其...
char * 与 char a[ ] 的本质区别: 当定义 char a[10 ] 时,编译器会给数组分配十个单元,每个单元的数据类型为字符。。 而定义 char *s 时, 这是个指针变量,只占四个字节,32位,用来保存一个地址。。 sizeof(a) = 10 ; sizeof(s) = ?