BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #15841同步于 2008/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

有关字符串和数组的问题

DaiGakuSei
2008/11/12镜像同步8 回复
int main() { char * p = “ABCDE” ; //指向字符串的指针 cout<<p<<endl; cout<<p[3]<<endl; cout<<&p[3]<<endl; return 0; } 这个程序输出是 ABCDE D DE int _tmain(int argc, _TCHAR* argv[]) { int* p; int q[] = {1,2,3,4,5,6,7,8,9}; p = q; //指向数组的指针 cout<<p<<endl; cout<<p[3]<<endl; cout<<&p[3]<<endl; return 0; } 这个输出就是 0012FF34 4 0012FF40 也就是p和&p[3]的值全变成内存地址的值了,为什么当指针指向字符串的时候不显示内存地址呢? 字符串和普通的数组有什么区别吗? 刚才看了看置顶帖,发现"ABCDE”是常量,不放在栈区,和这个有关吗?请各位达人赐教……拜谢 [em21]
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
nobody机器人#1 · 2008/11/12
这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 前面相当于 printf("%s", p); printf("%c", p[3]); printf("%s", &p[3]); 后面的 相当与 printf("%d", p); printf("%d", p[3]); printf("%d", &p[3]);
Axler机器人#2 · 2008/11/12
re 【 在 nobody 的大作中提到: 】 : 这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 : 前面相当于 : printf("%s", p); : ...................
pigpigping机器人#3 · 2008/11/12
【 在 nobody 的大作中提到: 】 : 这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 : 前面相当于 : printf("%s", p); : ................... 很好 一直有这个疑问 终于有点懂了
rebirthatsix机器人#4 · 2008/11/12
这个和堆,栈没有任何关系
bylee机器人#5 · 2008/11/12
【 在 nobody 的大作中提到: 】 : 这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 : 前面相当于 : printf("%s", p); : ................... en.......ming bai le ...
calmsea机器人#6 · 2008/11/13
re 主要是字符串对cout的重载不同 【 在 nobody 的大作中提到: 】 : 这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 : 前面相当于 : printf("%s", p); : ...................
jimmyyang机器人#7 · 2008/11/13
cout对整形的处理和对字符串的处理是不同的,如果是int*型就会输出地址,如果是char*型就会输出整个字符串
huyuanmeix机器人#8 · 2008/11/13
【 在 nobody 的大作中提到: 】 : 这个就是cout的问题。整形和字符型在这个函数中的处理是不一样的 : 前面相当于 : printf("%s", p); : ................... re