What is the output when the sample code below is executed?
4 phương ánCó giải thích
#include<stdio.h>
void increment(int *ptr) {
(*ptr)++;
}
int main(){
int x=1005;
increment(&x);
printf("%d ",x);
}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: "1006". Hàm main truyền &x, tức địa chỉ của x, nên tham số ptr trỏ đúng vào ô nhớ của x. Trong hàm, (*ptr)++ lấy nội dung tại ô đó rồi tăng chính ô đó lên một, vì vậy x ở main thành 1006 trước khi printf chạy; đây là cách duy nhất để một hàm trong C sửa được biến của nơi gọi. Cặp ngoặc quanh phép lấy nội dung là chi tiết quan trọng: nếu viết thiếu nó thì phép tăng áp lên bản thân con trỏ chứ không lên giá trị được trỏ tới. Lựa chọn "1005" là giá trị cũ, chỉ đúng nếu hàm nhận một bản sao int và tăng bản sao đó. Lựa chọn "0" không ứng với bước nào vì x được khởi tạo 1005 và chỉ chịu một phép tăng. Lựa chọn "1007" đòi hai lần tăng, trong khi hàm chỉ được gọi một lần và thân hàm chỉ có một phép tăng.
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 1 bộ đề
Đi tiếp từ đây