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;
}


Đọ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;
}

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;
}

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;
}



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;
}

Creative Commons Licence
Tài liệu này mang giấy phép Creative Commons Attribution-NonCommercial 4.0 Quốc tế

No comments:

Powered by Blogger.