Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Char *s vs int *i Cần chỉ giáo

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    8

    Thumbs down Char *s vs int *i Cần chỉ giáo

    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
    int arrayInt[] ={1,2,3,4,5,6,7};
    char str[]="This is ABC123";
    char *s ;
    s = &str[8];
    cout << s <<endl;
    int *pointerInt;
    pointerInt = &arrayInt[3];
    cout << pointerInt << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Trong đoạn code trên: s và pointerInt đều là địa chỉ của con trỏ. Em có 1 thắc mắc là tại sao cout s thì cho kết quả là 1 chuỗi các ký tự còn cout pointerInt lại chỉ cho ta địa chỉ của con trỏ. Mong các bác chỉ giúp

  2. #2
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    tro lai C nha:
    doi voi mot so nguyen ta viet:
    scanf("%d",&n);
    doi voi mot ki tu hay chuoi ta viet:
    scanf("%c",s);

    ban hieu roi chu

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi vidangcafe Xem bài viết
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
    int arrayInt[] ={1,2,3,4,5,6,7};
    char str[]="This is ABC123";
    char *s ;
    s = &str[8];
    cout << s <<endl;
    int *pointerInt;
    pointerInt = &arrayInt[3];
    cout << pointerInt << endl;

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Trong đoạn code trên: s và pointerInt đều là địa chỉ của con trỏ. Em có 1 thắc mắc là tại sao cout s thì cho kết quả là 1 chuỗi các ký tự còn cout pointerInt lại chỉ cho ta địa chỉ của con trỏ. Mong các bác chỉ giúp
    Hi cafe đắng,
    để trả lời cho câu hỏi của bạn, một câu hỏi khá thú vị mình xin được giải thích như sau :
    cout là 1 object
    << là toán tử 2 ngôi đã được đa năng hóa từ trước đó. và câu trả lời là do hàm đa năng hóa của nó hành xử như thế!

    Tại sao lại hành xử như thế ?
    đối với phép toán cout << char * thì người ta sẽ hiểu là bạn đưa vào luồng ra 1 string!!!!
    đơn giản, cout có thể hiểu được đoạn text đó kết thúc ở đâu đựa vào NULL


    cout << int*
    lần này bạn đưa vào 1 con trỏ ,
    cái nó viết ra ko phải là gì ? ko phải là "địa chỉ của con trỏ" đâu bạn à mà là giá trị nằm trong p!!!!

    Chi tiết hơn bạn hãy tham khảo
    http://forums.congdongcviet.com/showthread.php?t=42977
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    sr ban nha, minh nham %s vs %c tai lau ko dung den cung quen mat, sr moi nguoi, lan sau se doc sach lai ki truoc khi tra loi

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    8

    @Lang man Thanks bạn rất nhiều về câu trả lời. Còn chỗ này mình nghĩ bạn nên check lại.
    int *p;
    cout << p;
    --> in ra địa chỉ của p chứ không phải là giá trị. Bạn check lại nhe !

    @stupid_genius: Cảm ơn bạn đã quan tâm đến câu hỏi của mình.

  6. #6
    Ngày gia nhập
    07 2011
    Bài viết
    160

    Mặc định Char *s vs int *i Cần chỉ giáo

    Trích dẫn Nguyên bản được gửi bởi vidangcafe Xem bài viết
    @Lang man Thanks bạn rất nhiều về câu trả lời. Còn chỗ này mình nghĩ bạn nên check lại.
    int *p;
    cout << p;
    --> in ra địa chỉ của p chứ không phải là giá trị. Bạn check lại nhe !

    @stupid_genius: Cảm ơn bạn đã quan tâm đến câu hỏi của mình.
    langman trả lời vậy là chính xác đấy!
    int *p ==> p là 1 biến kiểu con trỏ. 3 khái niệm dưới đây là khác nhau:
    *p là giá trị mà p trỏ đến
    p là giá trị của con trỏ p. Cũng là địa chỉ của cái mà p trỏ đến (địa chỉ của *p)
    Còn &p mới là địa chỉ của p, lại khác!

  7. #7
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    minh nghi la cho day langman nham do ban a; tai vi langman dang giai thich su khac nhau giua 2 dong cout<<char* va cout<<int*
    int* p;
    cout<<p-->in ra dia chi ma p tro den;
    cout<<(*p)-->in ra gia tri ma p tro den;
    con nhung cai langman noi minh thay hoan toan chinh xac
    Đã được chỉnh sửa lần cuối bởi stupid_genius : 08-08-2011 lúc 11:03 AM.

Các đề tài tương tự

  1. Lập trình C Gặp lỗi error C2440: '=' : cannot convert from 'char *' to 'char [50]'
    Gửi bởi Hades_Huynh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2013, 01:38 PM
  2. Tìm SV theo tên trong DSLK đơn, lỗi invalid conversion from `char' to `const char*'
    Gửi bởi dk411 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 02-11-2011, 01:55 PM
  3. Lỗi của kiểu dữ liệu Char và cách nhập giá trị nguyên vào biến Char?
    Gửi bởi fcbik58 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 08-08-2011, 11:27 AM
  4. Bài tập C ham timkiem thông báo lổi:invalid conversion from `char' to `const char*'
    Gửi bởi weboys trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 22-05-2011, 09:45 PM
  5. string, char, Unicode char trong VC++
    Gửi bởi TQN trong diễn đàn Tutorials và Thủ thuật Visual C++
    Trả lời: 2
    Bài viết cuối: 09-03-2010, 01:35 PM

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