您的位置:首页 > 编程语言 > C语言/C++

C语言-数组与指针 字符与字符串

2014-07-30 11:48 316 查看
1 字符与字符串:char c='a'而不能写出char c="a" //字符变量用单引号'',而字符串用双引号。

2 字符数组与字符指针:

  char s[10] *p

strcpy(s,"hello word\n");或者p="hello word\n";

而不能用s="hello word\n"y因s数组名表示数组的首地址是个常量。

3 指针与数组:

int i,s[10],*p; 或者 int i,s[10],*p;

p=a for(p=a;p<a+10;p++)

for(i=0;i<10;i++)   scanf("%d",p);

scanf(:%d”,p++);

而不能:

int i,a[10];

for (i=0;i<10;i++)

scanf("%d",a++);//数组的首地址是不能改变的。

4字符数组 字符指针 字符串 strlen() sizeof

4.1字符数组 :char *p/a[]="string"或者={‘s','t','r','i','n','g'}

4.2字符串:系统遇到字符串都会在末尾加上结束符“\0”

4.3 strlen(char *str):计算遇到“\0"之前的字符串的长度的函数,参数必须是字符串,计算的结果不包括结束符“\0",因此计算的是字符串中字符的个数。

4.4 sizeof():计算常量或变量存储类型的字节数,它是计算符不是函数。

4.5 字符指针:char *s 指针通常为4个字节

所以 char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符,字符占1个字节

char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前

int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4,32位机种int整形数据占4个字节
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''\0''结尾的

char q[]="abc";
char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
结果是 4 3 3 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: