Em chào anh chị ạ. Em có một khúc mắc.
#include <stdio.h>
#include <conio.h>
int main() {
// test vs kieu char
char *daynhauhoc0 = "D"; // không loi
char daynhauhoc1[]={'D','a','y','n','h','a','u','h','o','c','2','\0'};
int *daynhauhoc2 = 3; // loi
}
Tại sao khi em dùng con trỏ và gán giá trị với kiểu int thì nó báo
[Error] invalid conversion from 'int' to 'int*' [-fpermissive]
còn với kiểu char em lại không gặp lỗi khác kiểu dữ liệu như vậy. Vì em nhớ là con trỏ nó là 1 biến nguyên là chỉ có thể lưu và gán được giá trị là địa chỉ của một biến cùng kiểu với nó. Ở đây char lại gán được giá trị chứ không phải địa chỉ của bất kỳ biến nào ( không cần khai báo biến ).
Và còn một vấn đề nữa khi em commnet câu lệnh lỗi lại và thêm đoạn code để chạy chương trình nó có thể in trức tiếp giá trị của biến daynhauhoc0 mà không cần qua toán tử *. Mọi người giải đáp giúp em với ạ. Em cảm ơn ạ.
Code của em
#include <stdio.h>
#include <conio.h>
int main() {
// test vs kieu char
char *daynhauhoc0 = "D"; // không loi
char daynhauhoc1[]={'D','a','y','n','h','a','u','h','o','c','2','\0'};
//int *daynhauhoc2 = 3; // loi
printf("\n in ra daynhauhoc0 = %s",daynhauhoc0);
return 0;
}
output: in ra daynhauhoc0 = D