【发布时间】:2013-04-11 01:30:54
【问题描述】:
我有以下两个问题
给定这样的语句 char * str = "999999999999";编译器如何确定在堆栈上分配多少空间?
如何遍历str指向的内存并确定其中各个位的值?
【问题讨论】:
-
1) sizeof(char*) 在堆栈上。
-
about 1. :在编译时,编译器将能够知道“char”在您的机器和语言环境上代表什么,以及使用多少字节来存储“999999999999”(+终止NULL 字符,它也因机器/实现而异,因此取决于机器)。
-
@OlivierDulac 它是 char * 而不是 char。 char * 应该能够指向任意大小的内存。我有兴趣了解编译器如何确定指向的大小而不是指针本身的大小
-
@Jimm:就像我说的,它知道 1 个字符的大小,以及你给它的“999999999999”静态字符串中有多少个字符,以及终止空值的大小。因此它在编译时就知道它的大小。 (如果我误解了你的评论,请原谅我?)。但是 cmd 是正确的:字符串本身不在堆栈上^^。对不起。
标签: c