84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
今天面试的时候被问到了。我们知道memcpy传入的指针类型是void*。但是由于复制的时候要一个个字节去复制,所以我们需要把void转换成char类型来处理。那么问题来了,我可不可以声明函数的时候就写成char*呢?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
C/C++ 規定可以將任何類型的指針轉換為void指針,void指針轉換為任何類型的指針,所以我們可以將type 轉換為void ,然後將void轉化為char進行memcpy。若是入參定義為char,對於編譯器不能隱身轉換的型別需要在呼叫的地方進行指標型別強轉為char。
memcpy要做的是bit-wise的拷貝,所以需要逐位的去拷貝。 char類型只佔一個byte的空間,所以選擇char來實作。參數列表使用void*是為了表示該參數可以是指向任意類型的指標。
C/C++ 規定可以將任何類型的指針轉換為void指針,void指針轉換為任何類型的指針,所以我們可以將type 轉換為void ,然後將void轉化為char進行memcpy。若是入參定義為char,對於編譯器不能隱身轉換的型別需要在呼叫的地方進行指標型別強轉為char。
memcpy要做的是bit-wise的拷貝,所以需要逐位的去拷貝。 char類型只佔一個byte的空間,所以選擇char來實作。參數列表使用void*是為了表示該參數可以是指向任意類型的指標。