0 c
我有以下代码:
void main(int argc, char *argv[]){
for (int i=1; i<argc; i++){
printf("%s-%lu\t", argv[i], sizeof(argv[i]));
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这$./a.out int long应该给我
short-2 int-4 long-8
Run Code Online (Sandbox Code Playgroud)
但我得到了
short-8 int-8 long-8
Run Code Online (Sandbox Code Playgroud)
有人能告诉我为什么吗?
sizeof不是一个函数;它是一个运算符。
它为您提供对象、类型或常量表达式的大小。如果您将其作为字符串传递,它不会为您提供类型的大小。
sizeof("long")将为您提供字符串文字 的大小"long"(即 5)而不是类型的大小long(例如 8)。
由于argv是指向 的指针数组char,sizeof(argv[j])将为您提供 的大小pointer to char。