我正在C学习明天的最后一个,并对sizeof运算符有疑问.
假设a的大小int
是32
位,而指针是64
位.
如果有功能:
int
foo (int zap[])
{
int a = sizeof(zap);
return a;
}
Run Code Online (Sandbox Code Playgroud)
因为zap
是一个指针,foo
会返回8
,因为这是存储这个特定指针所需的字节数.但是,使用以下代码:
int zip[] = { 0, 1, 2, 3, 4, 5 };
int i = sizeof(zip);
Run Code Online (Sandbox Code Playgroud)
i
将是6 * sizeof(int)
= 6 * 4
=24
为什么它sizeof(zip)
返回元素的数量乘以每个元素sizeof(zap)
的大小,而返回指针的大小?它的大小zap
是未指定的,zip
不是吗?编译器知道这zip
是6
元素,但没有关于zap
可能有多大的线索.
我对我写的这个KornShell(ksh)脚本有些困惑,主要是用布尔和条件语.
所以我的脚本的第一部分,我catme
和wcme
两个设置为true
或false
.这部分工作正常,因为我已经尝试过echo
它们并产生了预期的结果.后来,我有这个代码:
if [[ $catme ]] ; then
some commands
fi
Run Code Online (Sandbox Code Playgroud)
我再说一遍wcme
.但是,出乎意料的是,无论是什么wcme
,catme
我的if
语句中的命令都会被执行.
这是语法错误吗?我尝试过,[[ $catme -eq true ]]
但似乎也没有用.有人能指出我正确的方向吗?