Thắc Mắc Toán Tử Sizeof Trong C++ - Programming - Dạy Nhau Học
Có thể bạn quan tâm
Chào mọi người , Mình có một số vấn đề phát sinh với hàm sizeof này mong mọi người chỉ bảo giùm mình ? Mình cấp phát một bộ nhớ động cụ thể chương trình dưới là q. vậy làm thế nào để mình tính được kích thước của bộ nhớ mình cấp phát ạ . khi mình dùng hàm sizeof thì nó chỉ trả về là 4byte . Nhưng mình muốn nó trả về là số byte của cả mảng của mình cụ thể code dưới là 100*4 = 400 thì làm thế nào ạ ? Và từ vấn đề trên phát sinh thêm một cái nữa là mình tạo 1 mảng a[100] , và con trỏ p , khi mình kiểm tra kích thước bằng sizeof với a thì : 400 , nhưng với p lại là : 4 . vậy tại sao ạ ? và các khắc phục nếu có . Mình xin trân thành cảm ơn.
Chương trình như sau:
#include <iostream> #include <stdlib.h> #include <graphics.h> #include <conio.h> using namespace std; int main() { float a[100]; int lenght=0; float *p,*q; p=a; q=new float[100]; cout<<"sizeof bang a="<<sizeof(a)<<endl; cout<<"sizeof bang p="<<sizeof(p)<<endl; cout<<a<<"//"<<p<<endl; // dia chỉ như nhau cout<<"sizeof q mang dong="<<sizeof(q)<<endl; }Cảm ơn bạn Dark.Hades đã chia sẻ bài viết về địa chỉ và mảng rất hay . nhưng mình chưa tìm được cách khác phục hihi.
Và nếu anh em nào muốn kiểm tra việc cấp phát trong C++ có lỗi hay không thì mình biết Hai cách sau (trong sách : lập trình hướng đối tường . Gs.Pham Văn Ất)
Kiểu *p=new Kiểu[n];Trước hết việc thì khi cấp phát bộ nhớ sẽ có 2 khả năng : thành công và không thành công ^^ Nếu thành công thì (Ví dụ là P ) sẽ chứa địa chỉ của vùng nhớ . Chỗ này chú ý là cái địa chỉ chỏ về này khác với địa chỉ mảng khi anh em khai báo ;
ví dụ : int a[10]; con trỏ a lúc này là int[10] còn int *p=new int[10] ; là con trỏ kiểu int Khi tao dùng toán tử gián p=a; thì sẽ bị đổi về kiểu *int nên không dùng sizeof được .Cách 1:
double *pd; int n; cout<<"\n Số Phần tử:"; cin>>n; pd= new double[n]; if (pd==NULL) { cout<<"Lỗi"<<endl; exit(0); }Cách 2: Sử dụng _new_handler (trong new.h)
void kiem_tra_new(void) { cout<<"Loi"; exit(0); } _new_handler=kiem_tra_new int n; cout<<"\nSo phan tu"; cin>>n; pd=new double[n];Sau một hồi đau não mình nghĩ không có cách nào khác phục sự phân dã của một mảng và dùng được sizeof sau phần dã đâu
Find the Size of integer array received as an argument to a function in c
c, arrays asked by Sunil Hari on 06:44AM - 05 Sep 14Thanks again and good luck… End.
Từ khóa » Câu Lệnh Sizeof Trong C++
-
Toán Tử Sizeof Trong C++
-
Toán Tử Sizeof Trong C - Học Lập Trình C Online - VietTuts
-
Toán Tử Sizeof Trong C - Programming - Dạy Nhau Học
-
Bài Tập C Về Toán Tử Sizeof - Hoclaptrinh
-
Sizeof() | Cộng đồng Arduino Việt Nam
-
Cách Dùng Sizeof Trong C/C++? - Cộng đồng C Việt
-
Toán Tử Sizeof | CppDeveloper
-
Sizeof Trong C – Struct Alignment Trong C++ | Bài Viết | Stdio
-
Lấy Kích Thước String Trong C++
-
Độ Dài Mảng Trong C++ | - Lập Trình Căn Bả
-
Làm Cách Nào để Xác định Kích Thước Của Mảng Trong C? - HelpEx
-
Làm Cách Nào để Xác định Kích Thước Của Mảng Trong C?
-
Toán Tử Sizeof Trong C
-
Bài 4: Các Kiểu Dữ Liệu Trong C - Học Lập Trình C Cơ Bản - VnCoder