请教一个C的问题
- C/C++ code
#include<stdio.h>#include<stdlib.h>#include<string.h>size_t str_len(char *string){ int length = 0; while(*string++ != '\0') { length +=1; } return length;}int main(){ char ch = 'a'; char *cp = &ch; printf("str_len(cp)=%d",str_len(cp)); printf("sizeof(cp)=%d",sizeof(cp)); printf("strlen(cp)=%d\n",strlen(cp)); *(cp+1)='c'; printf("%c\n",*cp); printf("%c\n",ch); printf("%c\n",*(&ch+1)); printf("%c\n",*cp+1); //printf("*++cp=%c\n",*++cp); printf("*cp++=%c\n",*cp++); printf("%c\n",*cp); char **c=&cp; printf("%c\n",**c); printf("str_len(cp)=%d",str_len(cp)); printf("sizeof(cp)=%d",sizeof(cp)); printf("strlen(cp)=%d",strlen(cp)); return 0;}结果是:
str_len(cp)=1sizeof(cp)=4strlen(cp)=1
a
a
c
b
*cp++=a
c
c
str_len(cp)=11sizeof(cp)=4strlen(cp)=11
为什么呢
[解决办法]
char ch = 'a';
char *cp = &ch;
木有明确的结束符\0,崩了也不奇怪。