小编Dav*_*ins的帖子

return(sizeof(array))给出了意想不到的结果

我编写了以下程序来确定静态数组的大小.当我跑它时,我得到了一个我无法解释的结果.我已经在stackexchange和google上做了一些搜索,但我读过的内容并没有给我一些提示.

#include <stdio.h>
int main()
{
  int arrSize, intSize, elemSize;
  int input[9][9];
  arrSize = sizeof(input);
  intSize = sizeof(int);
  elemSize = sizeof(input[0]);
  printf("Array: %d, Element: %d, Int: %d\n", arrSize, elemSize, intSize);
  return sizeof(input);
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行该程序时,我得到以下结果(使用linux):

./a.out ; echo $?
Array: 324, Element: 36, Int: 4
68
Run Code Online (Sandbox Code Playgroud)

我在http://c-faq.com/malloc/sizeof.html上看到,它sizeof是在编译时计算出来的,如果我将返回值更改为return sizeof(input[0])I get 36,4那么我得到的是如果我将其更改return sizeof(input[0][0])为预期的那样.那么为什么要sizeof(input)给予68回报,但是当存储时它会给出预期的324

c arrays sizeof return-value

5
推荐指数
1
解决办法
121
查看次数

为什么在PHP中执行布尔测试后会发生变量赋值?

while ($row = mysqli_fetch_array($result) && strlen($row['url_key']) > 4)
{
....
}
Run Code Online (Sandbox Code Playgroud)

我希望这能分配获取的数组,$row然后检查该数组中某个元素的长度,但我得到了

"PHP注意:未定义的变量:在/home/dwilkins/stage_image_update.php中的行..."

如果$row没有分配,我希望测试短路,并且不测试url密钥的长度.我知道正在分配$ row,因为当我取出&& strlen...时,它正常运行.那么导致这种行为的"引擎盖下"究竟发生了什么?我查看了逻辑运算符的PHP.net条目,但我对此没有深入了解.

php

2
推荐指数
2
解决办法
70
查看次数

标签 统计

arrays ×1

c ×1

php ×1

return-value ×1

sizeof ×1