请问一个C的有关问题
请教一个C的问题
结果是:
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,崩了也不奇怪。
- 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,崩了也不奇怪。