Lập trình con trỏ trong C - Code block
Thực hành với con trỏ
Con trỏ
- Địa chỉ và giá trị của biến
- Bộ nhớ có thể hiểu như một dãy các ô nhớ, mỗi ô nhớ được xác định một cách duy nhất thông qua một địa chỉ.
- Tất cả các biến trong một chương trình được lưu ở một vùng nào đó trong bộ nhớ.
- Khi khai báo một biến, chương trình dịch sẽ cấp phát cho biến đó một số ô nhớ liên tiếp đủ để chứa nội dung của biến. Địa chỉ của một biến chính là địa chỉ của ô đầu tiên trong số đó.
- Một biến luôn có 2 đặc tính: Địa chỉ của biến và giá trị của biến.
- Con trỏ là một biến. Nó chứa địa chỉ ô nhớ của một biến khác
- Nếu một biến chứa địa chỉ của một biến khác, thì biến này được gọi là con trỏ trỏ đến biến thứ hai
- Các con trỏ có thể trỏ đến các biến có kiểu dữ liệu cơ bản như int, char, double, hay dữ liệu tập hợp như mảng hoặc cấu trúc.
- Cú pháp khai báo
- Cú pháp khai báo:
- Kiểu_dữ_liệu *tên_con_trỏ;
- Ví dụ:
- int *px; //Khai báo một con trỏ có kiểu int
- Khi khai báo và thực hiện:
- int x,*px;
- px = &x;
- Ta nói: con trỏ px đang trỏ tới biến x hay px đang chứa địa chỉ của biến x
- Để truy cập giá trị px ta dùng *px
- Các phép toán
- Các phép toán trên con trỏ - Toán tử : & và *
- Toán tử “&”: là toán tử một ngôi và nó trả về địa chỉ ô nhớ của toán hạng
- Toán tử “*”: Đây là toán tử một ngôi và nó trả về giá trị chứa trong vùng nhớ được trỏ đến bởi biến con trỏ
-Xem thêm code khác tại đây:
Code LAB
https://codelabs-preview.appspot.com/?file_id=1113WM4uqtV1HDqyJ8KF24lRXnqDXCZIukOZ-Zd0AG9s#0
Bài tập thực hành 1
Lưu giá trị ra file
Example 1: Write to a text file using fprintf()
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
fptr = fopen("C:\\program.txt","w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("Enter num: ");
scanf("%d",&num);
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}
Example 1: Write to a text file using fprintf()
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
fptr = fopen("C:\\program.txt","w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("Enter num: ");
scanf("%d",&num);
fprintf(fptr,"%d",num);
fclose(fptr);
return 0;
}
|
Đọc dữ liệu từ file
Ví dụ 2: Đọc giá trị từ file
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
if ((fptr = fopen("C:\\program.txt","r")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
fscanf(fptr,"%d", &num);
printf("Value of n=%d", num);
fclose(fptr);
return 0;
}
Ví dụ 2: Đọc giá trị từ file
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
FILE *fptr;
if ((fptr = fopen("C:\\program.txt","r")) == NULL){
printf("Error! opening file");
// Program exits if the file pointer returns NULL.
exit(1);
}
fscanf(fptr,"%d", &num);
printf("Value of n=%d", num);
fclose(fptr);
return 0;
}
|
Bài tập 3 - Lưu 1 Structure ra file
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
NhanVien TP1;
printf("Nhap gia tri: \n");
printf("\nNhap ho ten: ");
gets(TP1.hoten);
printf("\nNhap chuc vu: ");
gets(TP1.chucvu);
printf("Nhap muc luong: ");
scanf("%f",&TP1.mucluong);
printf("Nhap muc chi:");
scanf("%f",&TP1.mucchi);
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
printf("Ho ten: %s",TP1.hoten);
printf("\nChuc vu: %d",TP1.chucvu);
printf("\nMuc luong: %5.2f",TP1.mucluong);
printf("\nMuc chi: %5.2f",TP1.mucchi);
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
//printf(fptr,"%s","Thong tin cua nhan su:");
fprintf(fptr,"nHo ten: %s",TP1.hoten);
fprintf(fptr,"\nChuc vu: %d",TP1.chucvu);
fprintf(fptr,"\nMuc luong: %5.2f",TP1.mucluong);
fprintf(fptr,"\nMuc chi: %5.2f",TP1.mucchi);
//3.5. Dong file
fclose(fptr);
return 0;
}
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
NhanVien TP1;
printf("Nhap gia tri: \n");
printf("\nNhap ho ten: ");
gets(TP1.hoten);
printf("\nNhap chuc vu: ");
gets(TP1.chucvu);
printf("Nhap muc luong: ");
scanf("%f",&TP1.mucluong);
printf("Nhap muc chi:");
scanf("%f",&TP1.mucchi);
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
printf("Ho ten: %s",TP1.hoten);
printf("\nChuc vu: %d",TP1.chucvu);
printf("\nMuc luong: %5.2f",TP1.mucluong);
printf("\nMuc chi: %5.2f",TP1.mucchi);
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
//printf(fptr,"%s","Thong tin cua nhan su:");
fprintf(fptr,"nHo ten: %s",TP1.hoten);
fprintf(fptr,"\nChuc vu: %d",TP1.chucvu);
fprintf(fptr,"\nMuc luong: %5.2f",TP1.mucluong);
fprintf(fptr,"\nMuc chi: %5.2f",TP1.mucchi);
//3.5. Dong file
fclose(fptr);
return 0;
}
|
Bài tập 4 - Lưu một mảng Struct ra file
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
//Khai bao truong phong kieu cau truc nhan vien
NhanVien TP1;
//Danh sach Nhan vien
NhanVien ds[10];
printf("Nhap gia tri: \n");
for (int i = 0; i<10; i++)
{
printf("\nNhap ho ten: ");
gets(ds[i].hoten);
printf("\nNhap chuc vu: ");
gets(ds[i].chucvu);
printf("Nhap muc luong: ");
scanf("%f",&ds[i].mucluong);
printf("Nhap muc chi:");
scanf("%f",&ds[i].mucchi);
}
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
for (int i = 0; i<10; i++)
{
printf("Ho ten: %s",ds[i].hoten);
printf("\nChuc vu: %d",ds[i].chucvu);
printf("\nMuc luong: %5.2f",ds[i].mucluong);
printf("\nMuc chi: %5.2f",ds[i].mucchi);
}
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
for (int i = 0; i<10; i++)
{
fprintf(fptr,"Nhan vien thu %d\n",i+1);
fprintf(fptr,"Ho ten: %s\n",ds[i].hoten);
fprintf(fptr,"Chuc vu: %d\n",ds[i].chucvu);
fprintf(fptr,"Muc luong: %5.2f\n",ds[i].mucluong);
fprintf(fptr,"Muc chi: %5.2f\n",ds[i].mucchi);
}
//3.5. Dong file
fclose(fptr);
return 0;
}
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
//Khai bao truong phong kieu cau truc nhan vien
NhanVien TP1;
//Danh sach Nhan vien
NhanVien ds[10];
printf("Nhap gia tri: \n");
for (int i = 0; i<10; i++)
{
printf("\nNhap ho ten: ");
gets(ds[i].hoten);
printf("\nNhap chuc vu: ");
gets(ds[i].chucvu);
printf("Nhap muc luong: ");
scanf("%f",&ds[i].mucluong);
printf("Nhap muc chi:");
scanf("%f",&ds[i].mucchi);
}
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
for (int i = 0; i<10; i++)
{
printf("Ho ten: %s",ds[i].hoten);
printf("\nChuc vu: %d",ds[i].chucvu);
printf("\nMuc luong: %5.2f",ds[i].mucluong);
printf("\nMuc chi: %5.2f",ds[i].mucchi);
}
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
for (int i = 0; i<10; i++)
{
fprintf(fptr,"Nhan vien thu %d\n",i+1);
fprintf(fptr,"Ho ten: %s\n",ds[i].hoten);
fprintf(fptr,"Chuc vu: %d\n",ds[i].chucvu);
fprintf(fptr,"Muc luong: %5.2f\n",ds[i].mucluong);
fprintf(fptr,"Muc chi: %5.2f\n",ds[i].mucchi);
}
//3.5. Dong file
fclose(fptr);
return 0;
}
|
Bài tập 4 - Lưu một mảng Struct ra file - Dạng bảng ngang
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
//Khai bao truong phong kieu cau truc nhan vien
NhanVien TP1;
//Danh sach Nhan vien
NhanVien ds[10];
printf("Nhap gia tri: \n");
for (int i = 0; i<10; i++)
{
printf("\nNhap ho ten: ");
gets(ds[i].hoten);
printf("\nNhap chuc vu: ");
gets(ds[i].chucvu);
printf("Nhap muc luong: ");
scanf("%f",&ds[i].mucluong);
printf("Nhap muc chi:");
scanf("%f",&ds[i].mucchi);
}
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
for (int i = 0; i<10; i++)
{
printf("Ho ten: %s",ds[i].hoten);
printf("\nChuc vu: %d",ds[i].chucvu);
printf("\nMuc luong: %5.2f",ds[i].mucluong);
printf("\nMuc chi: %5.2f",ds[i].mucchi);
}
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
for (int i = 0; i<10; i++)
{
fprintf(fptr,"Nhan vien thu %d\n",i+1);
fprintf(fptr,"Ho ten: %s\n",ds[i].hoten);
fprintf(fptr,"Chuc vu: %d\n",ds[i].chucvu);
fprintf(fptr,"Muc luong: %5.2f\n",ds[i].mucluong);
fprintf(fptr,"Muc chi: %5.2f\n",ds[i].mucchi);
}
//3.5. Dong file
fclose(fptr);
return 0;
}
/*
1. Tạo cấu trúc dữ liệu với các thông tin sinh viên
Tạo cấu trúc
Khai báo biến kiểu cấu trúc
Nhập dữ liệu vào biến
Hiện dữ liệu ra màn hình
Lưu biến ra file
*/
#include <stdio.h>
struct NhanVien
{
char hoten[50];
char chucvu[50];
float mucluong;
float mucchi;
};
int main ()
{
//Khai bao truong phong kieu cau truc nhan vien
NhanVien TP1;
//Danh sach Nhan vien
NhanVien ds[10];
printf("Nhap gia tri: \n");
for (int i = 0; i<10; i++)
{
printf("\nNhap ho ten: ");
gets(ds[i].hoten);
printf("\nNhap chuc vu: ");
gets(ds[i].chucvu);
printf("Nhap muc luong: ");
scanf("%f",&ds[i].mucluong);
printf("Nhap muc chi:");
scanf("%f",&ds[i].mucchi);
}
printf("\n----------Hien ra man hinh----------\n");
printf("Thong tin cua nhan su:");
for (int i = 0; i<10; i++)
{
printf("Ho ten: %s",ds[i].hoten);
printf("\nChuc vu: %d",ds[i].chucvu);
printf("\nMuc luong: %5.2f",ds[i].mucluong);
printf("\nMuc chi: %5.2f",ds[i].mucchi);
}
printf("\n----------Luu ra file----------\n");
//3.1 Khai bao con tro kieu file
FILE *fptr;
//3.2 Mo file
fptr = fopen("D:\\Nhanvien.txt","w");
//3.3 Kiem tra xem file co ton tai khong
if(fptr == NULL)
{
printf("Error!");
return (1);
}
//3.4 Bat dau luu ra file
printf("\n----------Dang luu ra file----------\n");
for (int i = 0; i<10; i++)
{
fprintf(fptr,"Nhan vien thu %d\n",i+1);
fprintf(fptr,"Ho ten: %s\n",ds[i].hoten);
fprintf(fptr,"Chuc vu: %d\n",ds[i].chucvu);
fprintf(fptr,"Muc luong: %5.2f\n",ds[i].mucluong);
fprintf(fptr,"Muc chi: %5.2f\n",ds[i].mucchi);
}
//3.5. Dong file
fclose(fptr);
return 0;
}
|

No comments: