我正在阅读一本关于 c 的书,以下段落对我来说有点不清楚:
令人惊讶的是,在上面的例子中传递指针效率不高!这是因为 int 类型是 4 个字节,复制它比复制其指针的 8 个字节更有效。但对于结构和数组,情况并非如此。由于复制结构和数组是按字节完成的,并且其中的所有字节都应该一个一个地复制,因此通常最好传递指针。
据我所知,CPU 中的所有操作都仅限于算术位操作,所以
作者关于复制数组和结构的意思是什么,不是一个 int 复制位移操作?
第二:是指针数组吗?
注意:书名是Extreme C,由packT出版,下面的例子是作者所指的:
#include <stdio.h>
void func(int* a) {
int b = 9;
*a = 5; a = &b;
}
int main(int argc, char** argv) {
int x = 3;
int* xptr = &x;
printf("Value before call: %d\n", x);
printf("Pointer before function call: %p\n", (void*)xptr); func(xptr);
printf("Value after call: %d\n", x);
printf("Pointer after function call: %p\n", (void*)xptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
'''