[英]C++ - How do i put a whole char-array in a pointer?
我是初學者(並沒有在互聯網上找到答案)。 我有一個指針和一個字符數組,並且想要保存整個數組,而不僅僅是第一個元素,保存在一個指針中以將其提供給一個函數(另外,我不允許更改函數參數)。
char Feld[ ] = {1,2,3}
char *pointer = NULL;
pointer = ???
功能:
void strncat(char *s)
{...}
調用函數:
strncat(???)
感謝您的幫助
如果函數聲明如下
void strncat(char *s);
那么這意味着該函數不知道指針s
指向s
數組的大小。 所以看起來這個函數處理的是一個字符串:一個以零字符結尾的字符序列。
另一方面,在函數名strncat
使用字母'n'
意味着該函數應該有一個更多的參數來指定所用字符數組的長度。
所以要么函數聲明不正確,要么應該重命名為例如
void strcat(char *s);
或者最好將其聲明為
char * strcat(char *s);
因此這個字符數組的聲明
char Feld[ ] = {1,2,3};
不能在函數中使用,因為數組不包含字符串且其長度未傳遞給函數。
您應該聲明數組,例如
char Feld[ ] = { '1','2','3', '\0' };
或喜歡
char Feld[ ] = "123"; // or { "123" }
指針不保留它們指向單個對象還是數組的第一個元素的信息。
因此,如果函數聲明如上所示,那么您應該只寫
char *p = Feld;
strcat( p );
或不使用中間指針,如
strcat( Feld );
在函數內,字符串的長度將由終止零'\\0'
之前的字符數確定。
Feld
是指向數組第一個元素的指針。 所以你可以通過strncat(Feld)
。 如果你願意,你也可以做char* pointer = Feld;
和strncat(pointer)
但真的沒有必要。 然后,您可以使用s[0],s[1],s[2]
訪問其他元素。 正如@Vlad 指出的那樣,您不能將整數分配給 char 數組,而需要執行char Feld[ ] = {'1','2','3'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.