C語言strcpy 函式和指標的題目

2021-05-13 17:16:36 字數 1293 閱讀 3837

1樓:匿名使用者

strcpy(char a*, char b*)的作用,簡單講就是給你兩個記憶體起始地址(你可以將它們想象成給了你兩排箱子,每個箱子都有編號,比如第一排的編號是0,1,2,3,4,第二排的編號是7,8,9,則a,b分別就是這兩排箱子的起始編號),將以b開始的記憶體地址中的資料複製到以a開始的記憶體地址中(就是將箱子7中的東西複製到箱子0,將箱子8中的東西複製到箱子1,...)。因為a要容納b的所有資料,所以分配給a的記憶體數量必須大於等於分配給b的記憶體數量(大於意味著a的記憶體沒裝滿,有富餘空間),即第一排箱子的數量要大於第二排的。

具體到你的問題,箱子的數量就是分配給陣列或字元指標的記憶體位元組數。str1和str4都分配了9個位元組,因為把字串分配給char陣列(陣列的大小沒由你顯式指定時才這樣)或char指標時,會比字串的實際長度多分配1個位元組,以容納'\0'字元,str2是8個位元組(8是顯式指定的),而str3一個位元組也沒分配,所以不能把"hell03"複製給str3,因為要裝下"hell03",需要至少7個位元組('\0'也要一個位元組)。

2樓:

strcpy(char *, char *)函式表示將第二個引數開始的字串拷貝到第一個引數的字串位置。故strcpy (a+1, b+2) 表示將b[2]開始的字串複製到a[1]開始的字串中,即a陣列變為「a2」。 strcat(char *, char *)函式表示將第二個引數開始的字串接到第一個引數開始的字串上,返回第一個字串的指標。

故strcat(a,c+1)表示將c[1]開始的字串接到「a2」後面,a陣列變成「a2yz」。

3樓:oo靈兒

str3定義了但是沒有初始化,你可以理解成起了個名字但是沒有分配記憶體,所以不能進行復制字串操作

4樓:匿名使用者

a 不用說肯定是對的。

b str3的值是一個無效的指標,無疑是錯的。

c str4 指向的是一個字串常量,通常情況下是能修改的,按照這種情況是錯的。但也有你例外,不同的平臺也有可能字串也是可以修改的。按照這種情況就是對的。

所以 c 的對錯是看情況的。

b 肯定是不對的。

c語言題目關於strcpy與strcat

5樓:匿名使用者

strcpy(a+1,b+2);把b從第三個元素『2』開始拷貝到a的第二個位置,輸出是a2,因為字串儲存的結尾都是『\0』,『\0』把字元『c』覆蓋了,因為'\0'不可見,所以是a2。然後strcat(a,c+1),把c從第二個元素開始連線到a上,所以結果是a2yz。

一道關於strcpy函式用法的c語言題目

選bstrcpy char dst,char src 的功能是將src字串複製到dst內,並在最後加 0 str1的長度為7,內容為 string 0 str2 5 的長度為5,內容未知。hello 的長度為6,內容其實為 hello 0 顯然,str2不夠長,而str1可以。選 b,str1 是字...

C語言函式及指標問題

代入變數和值的作用域不一樣,也就是,如果通過變數代入,此時不會改變變數的值。如果通過指標 引數 的形式代入,則會可以改變指標指向的變數的值,但是地址不可以改變。如果想改變地址呢,就得用雙指標,或者說第二層地址代入。這個理解起來其實很簡單 只要記住一點,實參和形參不在一個記憶體地址中就可以,改變形參不...

C語言指標呼叫函式問題,急求解釋(本題是《c和指標》上的題目

我不清楚你的疑問到底指哪些。我就你寫的這些 解讀 int read column numbers int columns,int max 函式功能 傳引數組首地址,及陣列最大長度。使用者輸入max個整數,只儲存其中的正整數 負數忽略 如果正整數的個數是偶數則返回個數。否則程式結束。void rear...