簡體   English   中英

C++ - 如何將整個字符數組放入指針中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM