char* pointer = new char [5] 。
strcpy_s(pointer,4, "foo") 。
我沒有完全理解指標的作業原理。在我的理解中,變數指標應該是存盤新分配的字串的起始地址。如果是這樣,為什么指標是一個char很重要,因為它只是存盤一個地址。
為什么我不能直接輸入
?void* pointer = new char [5]
謝謝你。
uj5u.com熱心網友回復:
指標需要知道其元素的大小,由于它的存在,你可以使用[]運算子來到達陣列的某個元素,否則它怎么知道要移動多少記憶體才能到達第n個元素?如果你可以將任何型別的指標宣告為void,那么它就必須自動推匯出它所指向的型別。考慮一下這段代碼:
char* pointer = new char[5] 。
pointer[3] = 'a'/span>;
對于void*這將是不可能的。我想,strcpy_s函式期望第一個引數是char*,而不是void*,這就是你的代碼不能編譯的原因。指標本身只是讓你知道某個變數/陣列甚至是函式在記憶體中的位置,但是當你指定指標的型別時,它就賦予了它更多的靈活性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315425.html
標籤:
