Announcement

Collapse
No announcement yet.

thắc mắc về kiểu void*

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] thắc mắc về kiểu void*

    như tiêu đề, mấy a bớt chút thời gian giải thích giúp e. void* hay là void** có ý nghĩa gì ạ


    #include "stdafx.h"
    #include "stdio.h"
    #include "string.h"
    #include "stdlib.h"
    #include "iostream"
    using namespace std;

    int N, in, out, num_e;
    void **table;

    void fifodestroy();
    int fifoempty();
    int fifoput(void *next);
    void fifoget();
    void fifoinit (int size);

    /*init queue*/
    void fifoinit (int size)
    {
    num_e=0; in=0;out=0;
    N=size;
    printf("fifo init\n");

    table=(void**)malloc(N*sizeof(void*));
    }

    /*free memmory*/
    void fifodestroy()
    {
    int i;
    if(!fifoempty())
    free(table);
    else
    {
    for(i=out;i<in;i++)
    {
    free(table[i]);
    }
    free(table);
    }
    }
    /*empty queue = 1 else 0*/
    int fifoempty()
    {
    return(num_e==0);
    }

    /*insert element*/
    int fifoput(void *next)
    {
    cout<<"\n**** oput: "<<next;
    if(num_e == N)
    return(0);
    else
    {
    table[in] = next;
    num_e++;
    in=(in+1)%N;
    return(1);
    }
    }
    // get out element
    void fifoget()
    {
    if(num_e==0)
    printf("khong co chuoi nao de in ra.");
    else
    do{
    printf("%s",table[out]);
    num_e--;
    out++;
    }while(out<N);
    }
    int main(int argc,char* argv[])
    {

    int y = 1;

    char *p, str[5];
    // printf("***\t %d", sizeof(void));
    printf(" Give an integer for size: ");
    scanf("%d", &y);
    fifoinit(y); /*init fifo*/

    do
    {
    putchar('\n');
    printf(" 0: Exit\n");
    printf(" 1: Insert a string into buffer\n");
    printf(" 2: Get a string from buffer\n");
    printf(" Choose one of the above options: ");
    scanf("%d",&y);
    switch (y)
    {
    case 1 :
    {
    printf(" Insert elements\n\n");
    printf(" Give string ");
    scanf("%s",str);
    p=strdup(str);
    if (!(fifoput((void*) p)))
    {
    free(p);
    printf(" Table is full\n");
    }
    else
    {
    printf(" Insert successful\n");
    }
    break;
    }
    case 2:
    {
    printf("Get elements\n\n");
    fifoget();
    break;
    }
    default: break;
    }
    }while(y!=0);

    fifodestroy();
    return 0;
    }

  • #2
    Kiểu void* sẽ tương thích với nhiều kiểu dữ liệu khác nhau.ps:
    ------"Some Will, Some Won't, So What? Someone's Waiting!"------

    Comment


    • #3
      @ 11520360: Bạn đưa nguyên 1 mớ code như thế ai đọc được. Khuyên bạn lần sau chỉ copy những gì cần thiết, code thì nên đặt vào thẻ
      PHP Code:
      ..code.. 
      cho dễ nhìn :brick:
      https://fbcdn-photos-a.akamaihd.net/...08264688_a.jpg

      Comment


      • #4
        Originally posted by 10520074 View Post
        @ 11520360: Bạn đưa nguyên 1 mớ code như thế ai đọc được. Khuyên bạn lần sau chỉ copy những gì cần thiết, code thì nên đặt vào thẻ
        PHP Code:
        ..code.. 
        cho dễ nhìn :brick:
        tại code này chắc ai cũng từng đọc hết rồi
        vs lại khỏi cần đọc code cũng trả lời dc mà
        Đã biết vô thường sao còn phiền não...

        Comment


        • #5
          Originally posted by tuanntqm
          Kiểu void cũng thông dụng và phổ biến
          kiểu void thì mình biết, nhưng void* thì mới thấy lần đầu, lại còn đối số là kiểu void nữa chứ

          Comment


          • #6
            Void pointer. Xem ví dụ: http://theory.uwinnipeg.ca/programming/node87.html

            Comment

            LHQC

            Collapse
            Working...
            X