30/09/2018, 16:38
Hỏi về bản chất con trỏ?
// Tìm phần tử có giá trị x trong mảng a[] có n phần tử,lưu index của x vào mảng iResult[]
int Search(int a[], int n, int x)
{
int *iResult = new int[];
for (int iCount = 0; iCount < n; iCount++)
for (int iCount2 = 0; iCount2 < n;iCount2++)
{
if (a[iCount] == x);
iResult[iCount2] = iCount;
}
return *iResult;
}
đây là hàm tìm tất cả các phần tử có khóa là x trong mảng a[n],lưu chỉ mục(index) của x vào mảng iResult[],hàm này sẽ trả về giá trị là 1 con trỏ,1 mảng con trỏ,hay 1 mảng các số nguyên ?
Và khi khai báo biến trong hàm main thì phải khai báo như thế nào ?
int iSearch = Search(a,100,10);
int *iSearch = Search(a,100,10);
int iSearch[] = Search(a,100,10);
int iSearch = *Search(a,100,10);
Khai báo như thế nào cũng ko đc
Bài liên quan
Khai báo như câu b nó báo lỗi giá trị kiểu int không thể sử dụng để khởi tạo 1 thực thể kiểu int *
nếu bạn return iResult; thì nó return con trỏ trỏ tới ô đầu của iResult. Ở đây bạn để hàm trả về kiểu int và để return *iResult thì là trả về giá trị ô đầu <=> return iResult[0]; BreakDown sai khi nói hàm này trả về 1 con trỏ. Nó trả về 1 giá trị !
Nói luôn phép gán câu a sẽ hợp lệ
Hợp lệ nhưng là sai bản chất của vấn đề muốn giải quyết
Bạn muốn nó trả về 1 con trỏ mà con trỏ đấy quản lý các biến là index đúng ko thớt?
đúng rồi,hoặc có thể nào đơn giản hơn là trả về 1 mảng tĩnh lưu các biến index ko ?
Bạn nhớ 1 kiến thức quan trong như thế này. Con trỏ cấp n sẽ quản lý con trỏ cấp n - 1 ( n >= 2)
VD: Con trỏ cấp 1 quản lý các biến bình thường
Con trỏ cấp 2 quản lý các con trỏ cấp 1
Con trỏ cấp 3 quản lý các con trỏ cấp 2
…
Con trỏ cấp n quản lý các con trỏ cấp n - 1
mình đặc biệt mơ hồ về con trỏ,cậu edit source + giải thích cặn kẽ được ko ?
ok xong ngay ấy mà :v
Thuật toán bạn xây dựng à? hình như có vấn đề về thuật toán
vấn đề nằm ở đâu ? 20 char @@
Mình sửa luôn thuật toán của bạn bị vòng lặp vô tận rùi. Hàm trả về con trỏ là vậy. Bạn để dấu * vào là trả về giá trị của ô đầu.
Kiểu trả về là int* tức là trả về 1 con trỏ cấp 1 trỏ tới kiểu các biến int nhé.
OK,đã thông tks bạn
à khai báo int *iResult = new int[10] >> cấp phát động thì cho kích thước làm gì :3
… Bạn nên học kỹ về con trỏ trước khi đặt thêm câu hỏi.