Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Nhờ giải thích kết quả của đoạn code

    mình có đoạn code sau :
    Mã:
    #include <stdio.h>
    #include <string.h>
    char* GetString1()
    {
     char *st = "String";
     return st;
    }
    char* GetString2()
    {
     char st[] = "String";
     return st;
    }
    char* GetString3()
    {
     char *st = new char[6];
     strcpy(st, "String");
     return st;
    }
    
    void main(){
    printf("Say: %s
    ", GetString1());
     printf("Say: %s
    ", GetString2());
     printf("Say: %s
    ", GetString3());
    
    }
    bạn nào giải thích hộ mình kết quả của nó với. mới học C++ để apply nên không hiểu lắm,mọi người chỉ giúp mình mới

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    int main() chứ ko phải void().
    - Lệnh 1 in ra "String" do st thuộc vùng const.
    - Lệnh 2 in blabla do st[] bị tiêu hủy.
    - Lệnh 3 in ra "String" do st ko bị hủy.

  3. #3
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    int main() chứ ko phải void().
    - Lệnh 1 in ra "String" do st thuộc vùng const.
    - Lệnh 2 in blabla do st[] bị tiêu hủy.
    - Lệnh 3 in ra "String" do st ko bị hủy.
    void với in chỉ là kiểu trả vè đâu ảnh hưởng gì bạn. còn phần dưới bạn giải thích chi tiết hơn được không, mình cũng hiểu là do biến bị hủy nhưng không rõ nguyên nhân và sự khác biệt giữa 3 phương thức.

    - - - Nội dung đã được cập nhật ngày 28-09-2014 lúc 02:41 PM - - -

    cái này có phải do phương thức 1 và 3 cấp phát động, phương thức 2 cấp phát tĩnh sẽ tự động hủy sau khi ra khỏi scop {}

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vudung75
    void với in chỉ là kiểu trả vè đâu ảnh hưởng gì bạn. còn phần dưới bạn giải thích chi tiết hơn được không, mình cũng hiểu là do biến bị hủy nhưng không rõ nguyên nhân và sự khác biệt giữa 3 phương thức.

    cái này có phải do phương thức 1 và 3 cấp phát động, phương thức 2 cấp phát tĩnh sẽ tự động hủy sau khi ra khỏi scop {}
    - Có chứ bạn (với C).
    - Lệnh 1 là do chuỗi "String" được ghi vào binary, tức là nó có sẵn từ đầu, ko thay đổi đc.
    - Lệnh 3 là do cấp phát động primitive nên ko bị hủy và vẫn còn đó.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi prog10
    - Có chứ bạn (với C).
    - Lệnh 1 là do chuỗi "String" được ghi vào binary, tức là nó có sẵn từ đầu, ko thay đổi đc.
    - Lệnh 3 là do cấp phát động primitive nên ko bị hủy và vẫn còn đó.
    ok thank bạn, mình đang hỏi C++ mà. chuẩn bị đi phỏng vấn mà chuyên làm java giơ qua C++ lẫn hết cả.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •