首页新闻找找看学习计划

有关于C语言指针的一个问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-09-12 17:27
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5     char *s = "hello, world";
6     printf("%d",strlen(s));
7     return 0;    
8 } 
 1 #include<stdio.h>
 2 int strlen(char *s)
 3 {
 4     int n;
 5     
 6     for(n = 0; *s != '0'; s++)
 7         n++;
 8     return n;
 9 } 
10 int main()
11 {
12     char array[] = "hello world";
13     
14     printf("%d",strlen(array));
15     
16     return 0;
17 }

这两段代码为什么结果会运行不同?

c
lateral的主页 lateral | 初学一级 | 园豆:2
提问于:2015-08-17 12:05
< >
分享
最佳答案
1

char *s = "hello, world"; // 这个叫以 '\0' 结束的字符串,这个可以用 '\0' 来得到字符串结束位置

char array[] = "hello world";  // 这个叫定长字符数组,这个不能用 '\0'得到字符串结束位置

收获园豆:8
Launcher | 高人七级 |园豆:45030 | 2015-08-17 13:16
其他回答(4)
0

2个值分别是多少

吴瑞祥 | 园豆:28701 (高人七级) | 2015-08-17 12:24
0

5,4?

稳稳的河 | 园豆:4183 (老鸟四级) | 2015-08-17 12:28
0

字符串给的不一样,换成一样的。

jackccc | 园豆:1341 (小虾三级) | 2015-08-17 12:43
0

C中字符串会以'\0'作为结束符;但是array是一个数组,紧接着array的内存单元的值与array没有任何关系,使用上文中的strlen方法得到的将是一个随机的值,而且这种方法会出现数组越界访问,建议不要使用。

收获园豆:2
ReadingLover | 园豆:142 (初学一级) | 2015-08-17 13:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册