What will be the output of the following program?
4 phương ánCó giải thích
void func(int *p){
int j =11;
*p = j;
}
int main() {
int i = 1;
int *p = &i;
func(p);
printf("%d,%d", i, *p);
getchar();
return 0;
}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: "11,11". Biến i của hàm chính bằng 1 và p giữ địa chỉ của i, nên truyền p vào func là truyền chính địa chỉ đó chứ không phải một bản sao của giá trị. Trong func, biến cục bộ j bằng 11 và lệnh ghi qua con trỏ đặt 11 vào ô nhớ mà p trỏ tới, tức ghi thẳng vào i; j chết khi hàm kết thúc nhưng giá trị đã nằm lại trong i. Sau lời gọi, i là 11 và nội dung chỗ p trỏ tới cũng là 11 vì p vẫn trỏ vào i, nên lệnh in xuất hai số 11 cách nhau bởi dấu phẩy. Dãy "1,1" là kết quả nếu hàm chỉ gán cho bản sao tham số, chẳng hạn cho con trỏ trỏ sang j, khi đó i không đổi. Dãy "0,0" cần một phép đặt về không, không có trong mã. Dãy "0,1" còn đòi hai số khác nhau, trong khi i và nội dung chỗ p trỏ tới luôn là cùng một ô nhớ nên không thể lệch nhau.
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