我从斯蒂芬普拉塔的"C Primer Plus"一书中学习C语言,结果是:
"完整表达式不是更大表达式的子表达式.完整表达式的示例包括表达式语句中的表达式和用作while循环的测试条件的表达式"
我无法清楚地理解完整表达式的确切定义是什么以及为什么本书认为测试条件是完整表达式.
任何人都可以清楚地解释"完整表达"的含义吗?如何指定表达式是否为完整表达式?
在这里,我有一个指向4个整数的ptr数组arr的指针。ptr指向整个数组。ptr[0]或*ptr指向数组的第一个元素,因此加1即可ptr[0]得出数组第二个元素的地址。
我不明白为什么使用sizeof(ptr[0])给出整个数组的大小16个字节,而不是第一个元素的大小4个字节(ptr[0]指向数组中第一个元素)。
int arr[4] = {0, 1, 2, 3};
int (*ptr)[4] = &arr;
printf("%zd", sizeof(ptr[0])); //output is 16
Run Code Online (Sandbox Code Playgroud)