sách gpt4 ăn đã đi

c - Chuỗi [x] so với *Chuỗi++

In lại 作者:太空狗 更新时间:2023-10-29 17:05:51 27 4
mua khóa gpt4 giày nike

这两种方法中哪一种在理论上更快,为什么? (指向字符串的指针必须是常量。)

destination[count] 和 *destination++ 之间的确切区别是什么? destination[count] 是否在每次调用时都从 0 di chuyển đến đếm ? *destination++ 是否每次调用都加 1?

char *const string = "Hello world!";
char *destination = malloc(strlen(string) + 1);
int đếm = 0;
while(string[count] != '\0')
{
destination[count] = string[count];

đếm++;
}

char *const string = "Hello world!";
char *destination = malloc(strlen(string) + 1);
char *ptr = string;
while(*ptr != '\0')
{
*destination++ = *ptr++;
}

câu trả lời hay nhất

这取决于编译器。使用现代编译器,如果不实际查看生成的代码,就不可能在单指令级别预测任何优化。两者都可能编译为等效指令。

也就是说,destination[count] sẽ không在每次调用时从 0 循环到 đếm。它获取 destination[0] 的内存位置,加上đếm 倍于 *destination 类型的大小,然后在那里查找。 (当然,这都是天真的说法——编译器可能做的更快。)

另一方面,*destination++ 获取了 destination[0] 的内存位置(不再是数组的开头, 因为你已经改变了 điểm đến), 看那里,并添加 *destination 类型的大小,以便 destination[0] 引用到以前的 destination[1]

关于c - 字符串 [x] 与 *字符串++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124099/

27 4 0
Đề xuất bài viết: Angular2 如何清理 AppModule
Đề xuất bài viết: c - 什么是c中的省略号运算符
Đề xuất bài viết: angular - NG2 : How can I access parent component generically?
Đề xuất bài viết: c - 32 位字的镜像位
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress