读书人

char类型的数组初始化debug有关问题

发布时间: 2012-08-21 13:00:21 作者: rapoo

char类型的数组初始化,debug问题

C/C++ code
#include <stdio.h>#include <string.h>int main(){    int i;    int length;        // 给myAlphabets 4个元素,但是调试时,显示的是        // 07 00 00 64 07 00 00 00        // 换成ascii,并不是 a,b,c,d。        // yourAlphabets 的值却是        // 61 62 63 64,ascii码值为a,b,c,d??    char myAlphabets[] = {'a', 'b', 'c', 'd'};    char yourAlphabets[4];        // strlen(myAlphabets)值应该是依平台不同而变化吧?        // length = 7,后面的3个元素是怎么来的??    length = strlen(myAlphabets);    for (i = 0; i < length; i++)    {        yourAlphabets[i] = myAlphabets[i];        printf("myAlphabets[%d] is %c\n", i, myAlphabets[i]);    }    printf("length is %d, sizeof is %d\n", length, sizeof(myAlphabets));    return 0;}


[解决办法]
因为没有字符串结束符\0
会一直向后找,直到找到一个结束符为止

地址内容是随机的
[解决办法]
不加 空字符strlen是随机的,有可能会死。。。
[解决办法]
哈哈 要加'\0',不然strlen一直找到有'\0'为止。程序可能会死掉。
[解决办法]
length = strlen(myAlphabets);

strlen()函数遇到‘\0’ 停止计算其长度,
把 char myAlphabets[] = {'a', 'b', 'c', 'd'};
改为: char myAlphabets[] = {'a', 'b', 'c', 'd','\0'};

读书人网 >C++

热点推荐