sách gpt4 ai đã đi

Sự khác biệt của chuỗi theo phong cách C: C/C++

In lại 作者:行者123 更新时间:2023-11-30 21:44:12 35 4
mua khóa gpt4 Nike

C 样式字符串之间有什么区别

char str[10]="Hello";

char str[]="Hello";

char* str= "Hello";

1) 我相信 char str[10]="Hello"是自动变量并存储在堆栈中。正确吗?即分配10 bytes在堆栈上。

2) 是否char str[]="Hello";也存储在堆栈中?即分配6 bytes - including null character在堆栈上。

3) 是否char* str= "Hello";将指针 str 存储在堆栈和对象 "Hello" 上存储在堆上?即分配6 bytes - including null character在堆上。

4) 所有字符串 (in question 1,2 and 3)是 null 终止的。对/错?

5)是否是C or C++每当我们创建像 "Hello" 这样的字符串时,它总是以空终止。假设在 C++我们声明string str = "Hello"; ,是否也为 null 终止?

biên tập

考虑在 main() 中声明的所有内容。

@负分和关闭请求。我问这个问题是关于它们存储在堆还是堆栈的位置?还有空终止。

1 Câu trả lời

“考虑在 main() 中声明的所有内容。”

Sau đó

1)是的。

2)是的。

3) 是,也不是(在常见实现中它既不存储在堆栈中,也不存储在堆中)。 “即分配 6 个字节”——您似乎忘记了指针所需的内存。另外,评论和另一个答案中有一个错误的说法,即 char* str= "Hello"; 是错误的,但实际上它是合法的 C,而且目前是合法的 C++ ...参见What is the type of string literals in C and C++?

4) 正确,但如果将 10 更改为 5,则结果为 false - 也就是说,给定 char str[5]="Hello";, đường不是以 NUL 结尾。

5) False 和 no(尽管实现可能会在字符串后面存储一个 NUL —— C++11 需要它 —— 但这不是字符串的一部分)。

<小时>

“我问这个问题是关于它们存储在堆还是堆栈的位置?”

人们从哪里知道这些是唯一的内存类型?局部变量存储在堆栈上,通过 trung tâm 分配的内存或(非放置)mới 从堆中分配。程序代码、文件范围变量和文字不属于这些类别。

关于c++ - C 风格字符串差异 : C/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621245/

35 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com