1.char是一个特殊的类型。
2.'a'和"a"是两个不同的概念。'a'是字符a所对的ASCII码值。"a"为字符串,它占两个字节存的是a和\0
对于'abcd'会转为//616263、"abcd"//仍为一个字符串。
3.sizeof()计算字符串长度时会算上'\0'。strlen()计算字符串长度时不算'\0'。
4.ar[3]等价于*(ar+3);
5.指针和指针相减的前提条件是指针的类型相同。指针的相减是计算两个指针之间的元素个数,这种计算是算头不算尾。指针之间只能相减不能相加。
6.0X0000 0000~0Xffff ffff之间的内存空间是4G。
7.全局变量又可被分为字符串常量区。所以下面一段代码:
#include<stdio.h>
viod main()
{
char ch[10];
char ar[]={"yhping"};
char *str="yhping";//注意:这个字符串常量定义在全局变量的字符串常量区。只能读,不能写。
int x=sizeof(str);//int x的值为4。
int y=sizeof("yhping");//int y的值为7。
char ch="1 2 3 4 5 6 7 8"[2]表示去此字符串中下标为2的元素,即3。
//int x1={ 12,23,34,45,56,67}[3];//编译是不能通过的,这种写法只是对字符串适用,并不适用于其他数组。
ch1=getchar();//输入时输入字符会回显,并且以enter键作为结束。
ch2=getch();//输入时不会回显,并且它的输入不以enter作为结束。
gets(ch);//当所输入字符串超出数组所定义的空间大小时系统会报错。它的输入以enter作为结束。
scanf("%s",ch);//不检查空间大小,以空格键作为输入的结束。
}
8.任何一个字符串数组里面都会有一个'\0'。
9.下面一段代码:
void my_strcpy(char *di,char *si)
{
while(*si!=‘\0’)
{
*di=*si;
++di;
++si;
}
*di=‘\0’;
}
另外一种写法:
while(*si!=‘\0’)
{
*di++=*si++;
}