我正在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 ]]但似乎也没有用.有人能指出我正确的方向吗?