- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
String literals: pointer vs. char array
(1 câu trả lời)
4 个月前关闭。
当我执行下一个代码时
int chính()
{
char tmp[] = "hello";
printf("%lp, %lp\n", tmp, &tmp);
trả về 0;
}
我得到了相同的地址。但是对于下一个代码,它们会有所不同
int chính()
{
char *tmp = "hello";
printf("%lp, %lp\n", tmp, &tmp);
trả về 0;
}
你能解释一下这些例子之间的内存差异吗?
1 Câu trả lời
char tmp[] = "hello";
是一个由 6 个字符组成的数组,初始化为 "hello\0"
(它具有自动存储持续时间并驻留在程序堆栈中)。char *tmp = "hello";
是指向 char
的指针用字符串文字的地址初始化 "hello\0"
驻留在只读内存中(通常在可执行文件的 .rodata
部分中,除了少数实现之外的所有实现都是只读的)。
当您有 char tmp[] = "hello";
,如上所述,在访问时,数组被转换为指向 tạm thời
的第一个元素的指针。 .它有类型 char *
.当你取地址tạm thời
(例如 &tmp
)它将解析为相同的地址,但具有完全不同的类型。它将是一个指向数组的指针 char[6]
.正式类型是char (*)[6]
.从 类型控制指针运算 ,当您前进指针时,使用不同类型进行迭代将产生不同的偏移量。前进 tạm thời
将前进到下一个char
.推进地址tạm thời
将前进到下一个 6 字符数组的开头。
当您有 char *tmp = "hello";
你有一个指向 char
的指针.当你取地址时,结果是指向指针的指针char
.正式类型是char **
反射(reflect)了两个间接层次。前进 tạm thời
前进到下一个 char
.推进地址tạm thời
前进到下一个指针。
关于arrays - char *array 和 char array[] 之间的内存区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67865746/
Điều này hiếm khi được sử dụng trong jQuery. Khi tôi xem mã, tôi thấy nó đã được sử dụng, vì vậy tôi đã gỡ lỗi giá trị này và nghĩ rằng đây chính là trường hợp đó. Nó vẫn khá hữu ích. Sau đây là tóm tắt về sự khác biệt và cách sử dụng của this và $(this). $(this) tạo ra cái gì?
Có sự khác biệt nào giữa việc sử dụng các lớp singleton và các bean được quản lý trong phạm vi ứng dụng để lưu trữ dữ liệu ứng dụng không? Tôi cần tra cứu một số tài nguyên JNDI, chẳng hạn như giao diện bean từ xa, vì vậy tôi đã tự viết cho mình một singleton để lưu trữ các tham chiếu của mình và chỉ cho phép
Nếu bạn xem kỹ các hình ảnh đi kèm, bạn sẽ nhận thấy rằng bạn có thể sử dụng Eclipse IDE để cấu trúc lại mã Groovy và chuyển đổi các phương thức thành closure và ngược lại. Vậy closure thực chất là gì và chúng khác với phương thức như thế nào? Có ai có thể đưa ra một ví dụ tốt về việc sử dụng closures không?
Sự khác biệt giữa vagrant box repackage (docs) và vagrant package (docs) là gì? Tôi nhận ra rằng gói vagrant chỉ hoạt động với VirtualBox.
Tôi muốn xem liệu có ai có thể giải thích tại sao đoạn mã sau lại hoạt động với valueOf nhưng lại không hoạt động với các đoạn mã khác không. nhập java.math.BigDecimal; lớp công khai Thay đổi { publ
Câu hỏi này đã có câu trả lời: Đã đóng cách đây 12 năm. Các bản sao có thể: Closures/Lambda trong PHP hoặc Javascript là gì trong ngôn ngữ bình dân
Câu hỏi này đã có câu trả lời ở đây: Vagrant, Docker, Puppet, Chef (3 câu trả lời) Đã đóng 2 năm trước. Docker và Chef có điểm gì chung?
Đoạn mã sau đây tạo ra kết quả tương tự trên 95% máy, nhưng lại khác nhau ở một số máy. Ở chế độ Gỡ lỗi, đầu ra là: Thay đổi từ Mới thành Hoàn thành OK Nhưng ở chế độ Phát hành: Thay đổi
////Tạo đối tượng var Obj; // init Object Obj= {}; Sự khác biệt giữa hai cái này là gì? Có thể nói ngắn gọn thế này được không? Có lợi ích gì khi sử dụng theo cách này không?
Tôi đang cố gắng tìm ra sự khác biệt giữa các dịch vụ hẹn giờ. Tôi nên sử dụng cái nào và khi nào? Tôi đang sử dụng máy chủ ứng dụng Jboss. 1) java.ejb.Schedule. @Schedule chú thích hoặc cấu hình từ xml. 2) javax.e
Tôi đã phát hiện ra rằng có ba cách khác nhau để truyền đối tượng vào hàm trong C++. Giả sử lớp của tôi như thế này: class Test { int i; public: Test(int x);
Sự khác biệt là gì? lớp công khai Kiểm tra { công khai tĩnh void main (String args []) { Chuỗi toBeCast = "c
Nếu tôi có một cột, đặt làm chỉ mục chính, đặt là INT. Nếu tôi không thiết lập chế độ tự động tăng mà chỉ chèn các số nguyên ngẫu nhiên duy nhất vào thì liệu điều này có làm chậm các truy vấn trong tương lai so với chế độ tự động tăng không? Nếu tôi có chỉ mục chính và chỉ mục duy nhất là INT
Sự khác biệt giữa hai định dạng ngày tháng này là gì? Cái đầu tiên cho biết thời gian thực tế, cái thứ hai cho biết thời gian bằng cách thêm giá trị chênh lệch múi giờ. NSDateFormatter *dateFormatter = [[phân bổ NSDateFormatter]
Nếu có một hàm, chẳng hạn như foo: function foo() { console.log('bar'); } thì trong JavaScript, sự khác biệt giữa việc gọi một hàm từ một hàm khác như thế này là gì:
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để bạn có thể trả lời bằng thông tin và trích dẫn bằng cách chỉnh sửa bài đăng này. . Đã đóng cửa 4 năm trước. Ngẫu hứng
Mã là gì: class Time { private: int hours; int minutes; int seconds; private
Tôi biết đây là điều rất cơ bản, nhưng có ai phiền giải thích sự khác biệt giữa hai khai báo mảng này không: #include array myints; ... và: int myints[5]; ... và tại sao lại là myints.size
Tôi đã học cách tính độ đặc hiệu của css theo http://reference.sitepoint.com/css/specificity Tuy nhiên, dựa trên tài liệu tham khảo này, tôi không hiểu sự khác biệt giữa các lớp giả (từ c) và các phần tử giả
Tại sao lại xuất hiện thêm các dòng trống khi chạy 2)? Với tôi, 1 giống như 2. Vậy tại sao lại thêm dòng ở 2)? 1) xuất p1=$(cd $(dirname $0) && pwd) #
Tôi là một lập trình viên xuất sắc, rất giỏi!