for( int i = 0; i < s.length(); i++) { s[i]... } 使用 for(char c: s) 时会复制一个s字符串再进行遍历操作,而使用 for(char& c: s) 时直接引用原字符串进行遍历操作,由于复制一个字符串花费了大量的时间,所以第一种解法要快于第二种解法。
在C语言中,(char *)s是一种类型转换的表达方式,它将变量s转换为字符型指针。这种转换允许s指向一个字符数组,通常用于处理字符串。这里需要注意的是,这种转换是强制性的,意味着编译器会强制将s的类型转换为字符型指针,而不管s原本的类型是什么。
char *s是将s定义为char型的动态数组,跟char s[n] (n>0) 差不多,不过s[n]限制了数组的空间,而*s没有限制。当你要定义一个数组存放数据,但你也不知道到底有多少个数据时就定义成动态的数组,如果定义成s[n]型可能会发生溢出。
c语言中(char *)s的意思是将变量s转换为字符型指针,为强制转换
相当于JAVA的强for循环的语法结构。相当于C++的:for( int i = 0; i < s.length(); i++){ s[i]...}
因为s是指针,所以s才是地址,*s是指向的char类型内容 所以要用scanf("%s",s);不过在用之前先要给s初始化,让其合法,例如让s指向一个字符串数组,不然s是个空指针。
定义字符型指针s,s可以指向一个字符,也可以指向字符数组,或者是字符串。
s是一个指针,可以指向字符,也可以指向字符串。当指向字符串的时候,应该不可以做减操作。当它指向一个字符时,才可以做减操作。当*s=b时,则c='b'-'a'=1;那么ascii码值为1的就是c所代表的字符了
char* 是声明一个字符类型的指针。比如:chat* y;就是声明一个指针y,这个指针指向的地址上只能存放字符类型的值。