Assume we have the following codes:
4 phương ánCó giải thích
double d=9;
double *p = &d;Suppose that a double occupies the memory block of 8 bytes, and the address of d is 1200. What is the result of the following expression: p + 8?
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "1264". Phép cộng trên con trỏ trong C được tính theo đơn vị phần tử, không theo byte: p có kiểu con trỏ tới double nên p cộng 8 nghĩa là nhảy qua 8 ô double, tức là dịch 8 nhân 8 bằng 64 byte kể từ địa chỉ 1200, cho ra 1264. Nhờ đúng quy ước này mà cách viết p cộng i luôn trỏ tới phần tử thứ i mà người viết không phải nhân tay với kích thước kiểu. Ý "1200" sai vì đó là giá trị của chính p khi chưa cộng gì. Ý "1208" sai vì 1208 là kết quả của p cộng 1, nhảy đúng một ô double. Ý "1209" sai vì nó coi con trỏ như một số nguyên thường rồi cộng thẳng 9 vào, vừa nhầm bước nhảy vừa nhầm cả số hạng; địa chỉ đó còn rơi vào giữa một ô double nên không phải chỗ bắt đầu của phần tử nào.
Cùng phần 5
What will be the output of the following C code?
#include <stdio.h>
void main()
{
int *ptr, a = 10;
ptr = &a;
*ptr += 1;
printf("%d,%d\n", *ptr, a);
}Có lời giảiCâu hỏi(Choose 1 answer)
What is the output of this C code?
#include <stdio.h>
#include <conio.h>
int main() {
int n = 267, *pn = &n;
char* pc = pn;
*pc = 0;
printf("n = %d", n);
return 0;
}Có lời giảiCâu hỏiWhat will be the output of the C program?
int arr[5] = { 2, 3, 5, 4, 7 };
int *ptr = (&arr + 1);
printf("%d %d\n", *(arr + 1), *(ptr - 1));Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 2 bộ đề
Đi tiếp từ đây