看板 C_and_CPP 關於我們 聯絡資訊
: String create_string( size_t max_length ) { : String ret = (String)malloc(max_length+1); : return ret[ 0 ] = '\0', ret; : } 試了一下發現將string size設5 也就是String ret=(String)malloc(5) 居然也能成功?? : void release_string( String target ) { : free( target ); : } 想請問 return ret[0]='\0' 這邊是將ret字串的開頭設為結尾?? : main() 經改寫變成這樣: : int main() : { : String str = create_string( 5 ); : strcpy( str, "12345" ); 如此一來的話 將12345 copy到 str中 str的分配是如何呢? 是 \0 1 2 3 4 5? : reverse( str ); : puts( str ); : release_string( str ); : return 0; : } : 這裡是 reverse() 的程式碼: : void reverse( String str ) : { : size_t left = 0, right = strlen(str)-1; : for ( ; left < right; ++left, --right ) { : char temp = str[left]; : str[left] = str[right]; : str[right] = temp; : } : } 非常感謝願意花時間指導 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.217.113
pcyu16:成功的意思是? / 可以當作是簡單的初始化 / try it :) 02/19 23:19
tobashi:就是沒有error 我以為沒放'\0'應該會出問題的? 02/19 23:56
pcyu16:如果只是要沒有 error 的話 編譯看看就知道行不行了吧~ 02/20 00:16
tobashi:是阿 所以結果是可行 02/20 00:18
fjm31714:可以正常執行不代表程式邏輯是正確的 02/21 17:57