VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C Cơ Bản

Ngôn ngữ lập trình C là gì? Lịch sử của C Các tính năng của C Cài đặt môi trường lập trình C Chương trình C đầu tiên Flow của chương trình C Biến trong C Các kiểu dữ liệu trong C Ép kiểu trong C Từ khóa trong C Các toán tử trong C Comment trong C Các hằng số trong C printf và scanf trong C Ký tự đặc biệt trong C Xử lý lỗi trong C Tệp Header trong C Toán tử sizeof trong C

Câu Lệnh Điều Khiển C

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

Con Trỏ

Con trỏ (pointer) trong C Con trỏ trỏ tới con trỏ Con trỏ và mảng trong C Quản lý bộ nhớ trong C

Structure & Union

Structure trong C Mảng của structure trong C Structure lồng nhau trong C Union trong C

C Math

Hàm math cơ bản trong C

C Function

Hàm trong C Hàm do người dùng định nghĩa Các kiểu hàm trong C Đệ quy trong C Call by value Call by reference

C Array

Mảng (array) trong C Mảng 2 chiều trong C Truyền mảng vào hàm
Chuỗi (String) Trong C
File I/O Trong C
Bài Tập C Có Lời Giải

Bài Học Bổ Sung

Enumeration (enum) trong C Preprocessors trong C Bảng ASCII
1 / 3
❮ ❯

Con trỏ và mảng trong lập trình C


Con trỏ trỏ tới con trỏ trong C
Quản lý bộ nhớ trong lập trình C

Trong bài viết này, bạn sẽ tìm hiểu về mối quan hệ giữa con trỏ và mảng trong lập trình C, và sử dụng chúng một cách hiệu quả trong chương trình của mình.

Mảng có liên quan chặt chẽ với con trỏ trong lập trình C nhưng sự khác biệt quan trọng giữa chúng là, một biến con trỏ có các địa chỉ khác nhau cũng như giá trị. Trong khi đó, trong trường hợp mảng là cố định.

Ví dụ sau sẽ chứng minh điều này cho bạn:

#include <stdio.h>
int main()
{
   char charArr[4];
   int i;

   for(i = 0; i < 4; ++i)
   {
      printf("Dia chi cua charArr[%d] = %u\n", i, &charArr[i]);
   }

   return 0;
}

Kết quả:

Dia chi cua charArr[0] = 6487616
Dia chi cua charArr[1] = 6487617
Dia chi cua charArr[2] = 6487618
Dia chi cua charArr[3] = 6487619

Lưu ý: Bạn có thể nhận được địa chỉ khác nhau của một mảng. Có sự khác biệt giống nhau (sự khác nhau 1 byte) giữa bất kỳ hai phần tử liên tiếp nào của mảng charArr. Đối với con trỏ, nó có thể trỏ vào vị trí của một biến khác, nó có thể lưu trữ bất kỳ địa chỉ nào.


Nội dung chính

  • Mối quan hệ giữa con trỏ và mảng trong lập trình C
  • Ví dụ: Chương trình tính tổng 6 chữ số nhập từ bàn phím với con trỏ và mảng

Mối quan hệ giữa con trỏ và mảng trong lập trình C

Ví dụ mảng:

int arr [4];
Con trỏ và mảng trong lập trình C

Trong lập trình C, tên của mảng luôn trỏ đến địa chỉ của phần tử đầu tiên của mảng.

Trong ví dụ trên, arr và & arr[0] trỏ tới địa chỉ của phần tử đầu tiên.

Vì địa chỉ của cả hai đều giống nhau, các giá trị của arr và & arr[0] cũng giống nhau.

arr[0] tương đương với *arr (giá trị của một địa chỉ của con trỏ)

Tương tự:

&arr[1] tương đương với (arr + 1) và arr[1] tương đương với *(arr + 1).
&arr[2] tương đương với (arr + 2) và arr[2] tương đương với *(arr + 2).
&arr[3] tương đương với (arr + 3) và arr[3] tương đương với *(arr + 3).
.
.
&arr[i] tương đương với (arr + i) và arr[i] tương đương với *(arr + i).

Trong C, bạn có thể khai báo một mảng và có thể sử dụng con trỏ để thay đổi dữ liệu của một mảng.

Ví dụ: Chương trình tính tổng 6 chữ số nhập từ bàn phím với con trỏ và mảng

#include <stdio.h>

int main() {
  int i, arr[6],sum = 0;
  printf("Nhap 6 so nguyen:\n");
  for(i = 0; i < 6; ++i)
  {
      // (arr + i) la tuong duong voi &arr[i]
      scanf("%d", (arr + i));

      // *(arr + i) la tuong duong voi arr[i]
      sum += *(arr + i);
  }
  printf("Sum = %d", sum);
  return 0;
}

Kết quả:

Nhap 6 so nguyen:
1
2
3
4
5
6
Sum = 21

Con trỏ trỏ tới con trỏ trong C
Quản lý bộ nhớ trong lập trình C

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaLinkedList trong javaArrayList trong javaXử lý duplicate trong SQLPhím tắt hay dùng trong ExcelBảo mật tập tin ExcelDịch trang tính trong ExcelIn trang tính trong ExcelHàm VLOOKUP trong ExcelĐối tượng đồ họa trong ExcelSử dụng macro trong ExcelSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml