Tôi có một đoạn mã C và tôi không hiểu làm thế nào sizeof(...)
chức năng hoạt động:kích thước của mảng và kích thước của con trỏ nhân vật nhân vật
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
Trong sizeof mã trên (firstname) là 6 và sizeof (họ) là 8.
Nhưng bobby
có chiều rộng là 5 ký tự và eraserhead
rộng 11. Tôi mong đợi 16
.
Tại sao sizeof hoạt động khác với mảng ký tự và con trỏ đến ký tự?
Có ai có thể làm rõ?
Cả hai 'sizeof' và' strlen() 'cho kết quả của kiểu' size_t'. Sử dụng '% zu', không phải'% lu' để in các giá trị 'size_t'. Hoặc, nếu trình biên dịch của bạn không hỗ trợ '% zu', hãy chuyển đổi thành một loại đã biết và sử dụng định dạng thích hợp cho loại đó. –