Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: [Hỏi về con trỏ trong C]

  1. #1
    Ngày gia nhập
    09 2014
    Nơi ở
    Bắc Giang (thành phố), Vietnam
    Bài viết
    0

    Mặc định [Hỏi về con trỏ trong C]

    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;

    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    09 2014
    Nơi ở
    Thành phố Hồ Chí Minh
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi dtthao.k59uet Xem bài viết
    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"
    C Code:
    1. int **b;
    Khi đó câu lệnh
    C Code:
    1. b=&a;
    mới có hiệu lực

  3. #3
    Ngày gia nhập
    10 2014
    Bài viết
    13

    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

  4. #4
    Ngày gia nhập
    09 2014
    Nơi ở
    hà nội
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi vancanh2095 Xem bài viết
    Bạn phải khai báo con trỏ "hai tầng"
    C Code:
    1. int **b;
    Khi đó câu lệnh
    C Code:
    1. b=&a;
    mới có hiệu lực
    bạn có thể noi rõ về con trỏ hai tầng trong kiểu xâu kí tự được không bạn, hoặc có tài lệu nói cách dung co trỏ hia tâng trong C không cho mình xin với
    thế giớ số

  5. #5
    Ngày gia nhập
    09 2014
    Nơi ở
    Thành phố Hồ Chí Minh
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi buianhduong9x Xem bài viết
    bạn có thể noi rõ về con trỏ hai tầng trong kiểu xâu kí tự được không bạn, hoặc có tài lệu nói cách dung co trỏ hia tâng trong C không cho mình xin với
    Con trỏ hai tầng trong xâu kí tự là sao ? Bạn có thể nói rõ ý của bạn muốn hỏi được không ?

  6. #6
    Ngày gia nhập
    09 2014
    Nơi ở
    hà nội
    Bài viết
    0

    Mặc định [Hỏi về con trỏ trong C]

    Trích dẫn Nguyên bản được gửi bởi programmer_2014 Xem bài viết
    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;
    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 ạ
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    thế giớ số

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn