30/09/2018, 16:02
Poll: Kiểm tra kiến thức C - 1.7
Các bạn thảo luận đáp án nhé, bài test lấy từ http://www.indiabix.com/online-test/c-programming-test/11
Will the program compile in Turbo C?
#include<stdio.h>
int main()
{
int a=10, *j;
void *k;
j=k=&a;
j++;
k++;
printf("%u %u
", j, k);
return 0;
}
- A. Yes
- B. No
Bài liên quan
Không có Turbo C, không biết làm
Đúng là không rõ trên turbo C chạy dc hay ko.
Nhưng trên C thuần thì mình nghĩ vẫn chạy bình thường.
Chỉ có điều là do j,k là con trỏ cho nên dòng printf nên để là
printf("%p %p\n", j, k); sẽ hay hơn.
(Ref:http://stackoverflow.com/questions/16726105/why-cant-we-use-d-in-c-language-instead-of-u-with-pointers)
Chắc là chạy bình thường thôi chứ nhỉ. Chỉ là print ra địa chỉ vùng nhớ thôi mà.
k++; ==> k là void pointer nên không có ++ được.
Hi @Giang_Tran
Ban đầu, k đúng là void pointer. Nhưng khi chạy tới dòng j=k=&a;, lúc này k trở thành int pointer.
Trích: http://www.c4learn.com/c-programming/c-void-pointers/
Em nghĩ C trong Turbo C nó ngu ngu, nên khi gán j = k thì cần phải ép kiểu cho nó chứ không gán trực tiếp được. Đoán là không compile được.
j = k = &a <=> int* = void* = &a
===========> YES