当我实现一个指向字符串的指针数组时,我知道字符串文字的字符将存储在连续的内存位置,每个字符串的基地址将存储在char指针中,这些指针本身也将存储在持续的内存位置中,但字符串也会存储在连续内存位置中吗?如果是,解释正确的原因。例如,如果字符串"akshay"的基址是182,那么下一个字符串"parag"的基地址会是189吗?如果是,为什么是
char *names[]={
"akshay",
"parag",
"raman",
"srinivas"
"gopal",
"rajesh"
};
否。
给定您的代码
char *names[]={
"akshay",
"parag",
"raman",
"srinivas",
"gopal",
"rajesh"
};
没有特别的理由期望字符串本身以任何特定的相互关系存储。
一种可能的安排可能是
names: 0x1002030: 0x100204c
0x1002034: 0x100205a
0x1002038: 0x100206c
0x100203c: 0x1002073
0x1002040: 0x1002054
0x1002044: 0x1002060
0x1002048:
0x100204c: aksh
0x1002050: ay
0x1002054: gopa
0x1002058: l pa
0x100205c: rag
0x1002060: raje
0x1002064: sh
0x1002068:
0x100206c: rama
0x1002070: n s
0x1002074: rini
0x1002078: vas
附言:值得一提的是,我在两个不同的编译器下尝试了您的代码,而这六个字符串实际上是连续存储的。我并不感到惊讶,但如果它们以其他顺序存储,我也不会感到惊讶。