[問題] 不用memcpy的情況下,給不同型態變數值
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DevC++
問題(Question):
在不用memcpy的情況下, 我想把整數x的內容設給字元陣列y.
目前的想法是直接把x的位置設給y,但編譯時會出現以下error.
incompatible types in assignment of `char*' to `char[4]'
還有什麼辦法可以把x的值設給y嗎? 感謝.
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <string.h>
int main()
{
int x = 0x55555555;
char y[4];
y = (char *)&x;
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.74.51
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1439913312.A.D27.html
※ 編輯: nimura14 (118.233.74.51), 08/18/2015 23:55:42
→
08/18 23:59, , 1F
08/18 23:59, 1F
感謝回覆! ^^ y是指向該陣列的頭的位置對吧?
再取址的意義是什麼呢?
→
08/19 00:06, , 2F
08/19 00:06, 2F
→
08/19 00:07, , 3F
08/19 00:07, 3F
※ 編輯: nimura14 (118.233.74.51), 08/19/2015 00:15:59
推
08/19 00:17, , 4F
08/19 00:17, 4F
→
08/19 00:21, , 5F
08/19 00:21, 5F
→
08/19 00:22, , 6F
08/19 00:22, 6F
→
08/19 00:24, , 7F
08/19 00:24, 7F
推
08/19 00:27, , 8F
08/19 00:27, 8F
→
08/19 00:30, , 9F
08/19 00:30, 9F
推
08/19 00:36, , 10F
08/19 00:36, 10F
→
08/19 00:37, , 11F
08/19 00:37, 11F
→
08/19 00:37, , 12F
08/19 00:37, 12F
→
08/19 00:37, , 13F
08/19 00:37, 13F
感謝deitchie, 我會研究看看, 真的學習了!
剛剛看了一下...第一次知道這個事實....
y的type是char *
&y的type是char *[4]
y和&y雖然位置一樣, 但是做記憶體運算時結果可是大不同...謝謝指教了!感謝
感謝EdisonX, 謝謝提醒!!
感謝stupid0319提供的1 byte 1byte搬的方式~~
※ 編輯: nimura14 (118.233.74.51), 08/19/2015 00:45:12
推
08/19 00:58, , 14F
08/19 00:58, 14F
→
08/19 00:58, , 15F
08/19 00:58, 15F
→
08/19 00:59, , 16F
08/19 00:59, 16F
※ 編輯: nimura14 (118.233.74.51), 08/19/2015 01:05:24
→
08/19 01:07, , 17F
08/19 01:07, 17F
剛剛還試過以下2個方式,結果都正確, 但是觀念怪怪的
1. y[0]=x;
直接把整數x的value設給字元陣列的第一個元素.
這個方式我覺得最怪,整數是4byte, 字元是1byte, 這樣的assign方式不會溢位嗎?
2. *y = x ;
這個方式沒有做牆制型態轉換, 但結果也是對的, 編譯器也沒warning.
是因為編譯器自己幫我做了型態轉換嗎?
※ 編輯: nimura14 (118.233.74.51), 08/19/2015 01:08:15
→
08/19 01:55, , 18F
08/19 01:55, 18F
推
08/19 19:11, , 19F
08/19 19:11, 19F
推
08/21 02:26, , 20F
08/21 02:26, 20F
→
08/21 02:27, , 21F
08/21 02:27, 21F
→
08/21 02:30, , 22F
08/21 02:30, 22F
→
08/21 02:30, , 23F
08/21 02:30, 23F
→
08/21 02:31, , 24F
08/21 02:31, 24F