Bạn phải khai báo con trỏ "hai tầng"
Khi đó câu lệnhC Code:
int **b;mới có hiệu lựcC Code:
b=&a;
Cho em hỏi 1 chút về con trỏ trong C ạ:
1.bản thân con trỏ cũng có địa chỉ đúng không ạ?
2.con trỏ có thể lưu địa chỉ của biến đúng không ạ?
nếu mà đúng thì tại sao đoạn code sau của em lại báo lỗi ạ?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *a = (int *) malloc (sizeof(int));
int *b;
b = &a;
}
Bạn phải khai báo con trỏ "hai tầng"
Khi đó câu lệnhC Code:
int **b;mới có hiệu lựcC Code:
b=&a;
1. Đúng
2. Đúng
Về mặc nguyên tắc là như vậy. Nhưng khi em gán b=&a; thì nó sẽ báo lỗi :
"cannot convert from 'int **' to 'int *' "
Bản thân a là 1 con trỏ kiểu int, &a là địa chỉ của 1 con trỏ nó tương đương với int**, cho nên trình biên dịch sẽ không cho phép em gán như vậy.
Muốn gán được thì có 2 cách :
- Ép kiểu : b = (int*)&a;
- Khai báo : int** b;
Học lập trình bắt đầu từ đâu ?
www.laptrinhCcanban.com
thế giớ số
em hỏi anh bài này cái: "Nhập một câu không quá 20 từ, mỗi từ không quá 10 ký tự. Viết chương trình
tách các từ trong câu và in các từ theo đúng thứ tự Alphabet"
trong bài trên em có thể dung mảng hai tầng để lưu các mảng lưu các từ của câu được không. hay anh có thể chỉ cho em thuật toán bài này được không ạ
thế giớ số