Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: char* string= new char[10]; làm sao để gán trị 0 cho 10 phần từ này

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    9

    Wink char* string= new char[10]; làm sao để gán trị 0 cho 10 phần từ này

    Hok bít đây có phải là vấn đề cơ bản về con trỏ hay hok nhưng khi đụng tới vấn đề có liên quan thì vướng mắc chỗ này, hy vọng ai đó bít qua chỉ mình cách giải quyết , Thx

    vấn đề là vd sau
    char* string=new char[10];
    mình mún mặc định tất cả 10 phần tử của biến mảng trỏ này là Zero.

    mục địch giống như lệnh sau đối với mảng Array thường
    char string[10]={0};

    nhưng vì phải sử dụng đến kiểu con trỏ trong vấn đề đang mắc mứu nên hok dùng kiểu mảng thường đc

    có 1 cách giải quyết nhưng mình nghĩ hơi lãng phí và thô
    char* string=new char[10];
    for(int i=0;i<10;i++)
    *(string + i) = 0;


    có ai bít thì chỉ giúp, thnk nhiều !

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    C++ Code:
    1. #define __init(m_Array,m_iLength,m_cValue) \
    2.         { for(int _cnt = 0; _cnt < m_iLength; _cnt++) \
    3.             m_Array[_cnt] = m_cValue; \
    4.         }
    5.  
    6. int a[100];
    7. __init(a,100,0);
    None!

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    9

    hình như cái code đó của bạn chỉ là chạy hàm gán lần lượt từng giá trị của mảng bằng 1 giá trị nào đó, kiểu thủ công, và là mảng

    ý mình là mún loại bỏ kiểu gán từng giá trị vào từng phần tử mảng kiểu thủ công for hay đại loại vậy, nếu có 1 cách tối ưu để gán trị mặc định 0 tất cả phần tử của 1 mảng trỏ
    tựa như là char string[10]={0};
    nhưng vấn đề là char* string mảng trỏ ký tự

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi NLKNguyen Xem bài viết
    hình như cái code đó của bạn chỉ là chạy hàm gán lần lượt từng giá trị của mảng bằng 1 giá trị nào đó, kiểu thủ công, và là mảng

    ý mình là mún loại bỏ kiểu gán từng giá trị vào từng phần tử mảng kiểu thủ công for hay đại loại vậy, nếu có 1 cách tối ưu để gán trị mặc định 0 tất cả phần tử của 1 mảng trỏ
    tựa như là char string[10]={0};
    nhưng vấn đề là char* string mảng trỏ ký tự
    cậu này không chịu đọc kĩ lý thuyết rồi ...
    Con trỏ là gì ???? (pointer)
    Thế nào là giá trị khởi tạo ? (initial value)
    Giá trị khởi tạo của con trỏ là bao nhiêu ? (Pointer's Initial Value)
    Cách sử dụng con trỏ vào mục đích gì ? (Purpose of Pointer)
    ---> từ 4 câu hỏi trên suy ra cái cậu cần hỏi !
    None!

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

    cái này còn tuỳ bạn dùng trình biên dịch nào chứ nhỉ , đâu phải ngôn ngữ C mặc định là char s[5]={0} thì tất cả 5 phần tử đều là 0 đâu ?
    ttecak ?

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    9

    Mặc định char* string= new char[10]; làm sao để gán trị 0 cho 10 phần từ này

    đại khái có 1 cái code hàm như sau :
    mục đích : đếm số lần xuất hiện từng ký tự trong chuỗi s nhập vào (dựa trên ASCII)
    bước chạy :
    1. khai báo 1 mảng con trỏ có 256 phần tử (để chứa số lần xuất hiện của từng ký tự trong bản mã ASCII)
    2. gán giá trị 0 khởi điểm cho 256 phần tử đó
    3. sét từng ký tự trong chuỗi s
    tăng giá trị trong ô phần tử ở vị trí tương ứng với mã ASCII tương đương
    vd : nhập chữ ABC, thì tăng trị trong ô phần tử word[65], word[66], word[67] lên thành 1
    4. return mảng để qua hàm khác liệt kê ra chẳng hạn

    C Code:
    1. char* StrFact(char *s){
    2.  char* word=new char[256];
    3.  for(int i=0;i<256;i++) word[i]=0; /*<----------*/
    4.  while(*s!='\0'){
    5.   word[*s]=int(word[*s])+1;
    6.   s++;
    7.  }
    8.  return word;
    9. }

    nói chugn đây là hàm trả về 1 mảng hoặc chuỗi,
    nhưng mà đừng quan tâm đến giải thuật của trình, mình đang tìm tòi mặt kỹ thuật thôi

    và qua 4 câu hỏi của bạn, thì câu hỏi của mình vẫn như in bài đầu tiên là ..
    for(int i=0;i<256;i++) word[i]=0; <-- mình phải dùng cách này để gán 0 cho tất cả phần tử, và mình thắc mắc có cách để khai báo với 1 giá trị mặc định cho từng phần tử trong mảng con trỏ đó ko ?
    đại loại kiểu khai báo + khởi tạo giá trị ban đầu như có bên kiểu mảng thông thường : int array[123]={123}
    Đã được chỉnh sửa lần cuối bởi NLKNguyen : 22-03-2008 lúc 10:54 PM.

  7. #7
    Ngày gia nhập
    03 2008
    Bài viết
    9

    @comeonbaby : mình dùng Borland C++, và Visual C++ cũng chạy đc

  8. #8
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    char s[10]; // or char* s = new char[10]
    memset(s, 0, 10);

  9. #9
    Ngày gia nhập
    03 2008
    Bài viết
    9

    oh, thx NguyenTuan2, mình cứ nhớ mang máng nó ở đâu rồi, thx nhiều :-)
    dù có lẽ hàm memset cũng đơn giản thôi nhưng tiếc kiệm phần nào hay phần đó đỡ phải coding lắc nhắc ^o^
    Thankx !

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Hàm memset này nó vẫn làm như cách của pete hay cách cậu for vậy thôi, chẳng qua là giúp cậu tiết kiệm thời gian.

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

  1. 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
  2. Bài tập C++ tạo toán tử ==trong lớp string với tham số là string, char
    Gửi bởi truonglong99 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: 24-10-2011, 08:56 AM
  3. 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
  4. C++ | Cuối string có phải là NULL như trong char* hay không?
    Gửi bởi Cpro trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 11-05-2009, 09:35 AM
  5. [VC] _itoa cần đối số char *string, nạp char * thì 0 được
    Gửi bởi thuongshoo trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 30-09-2006, 12:32 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