当我实现一个指向字符串的指针数组时,我知道字符串文字的字符将存储在连续的内存位置,每个字符串的基地址将存储在 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
附言对于它的值(value),我在两个不同的编译器下尝试了您的代码,并且六个字符串 事实上是连续存储的。我并不感到惊讶,但如果它们以其他顺序存储,我也不会感到惊讶。
关于c - 在指向字符串的指针数组中,所有字符串是否都存储在连续的内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51697188/