我有一個像這樣的我的char數組的指針。傳遞一個指向字符數組的指針到函數
unsigned char *recvBuf;
recvBuf = (unsigned char *)malloc(sizeof(char)*RECVBUF);
然後我傳遞到定義爲
void setHeader(MyHeader *myHeader, unsigned char *buffer)
我嘗試,並在以後傳遞給另一個功能上
哪個副本的前12個字節成一個結構然後,功能
Record readRecord(unsigned char *buffer, int *arrayPosition, int buffsize)
但是,當我嘗試訪問數組的任何部分時,程序總是變得無響應以與之前的功能中使用的完全相同的方式。在我將它傳遞給函數之前,我也很好地訪問它。
想法將不勝感激。
感謝
編輯:
指針是相同的。
這是第二個功能
我將此代碼添加到頂部內,它工作得很好
int k = *arrayPosition;
printf("%p \n", buffer);
printf("%c \n", buffer[k]);
這是原來的代碼,程序無響應adfter I = * arrayposition ..
int i, j;
Record *myRecord;
Resource *myResource;
unsigned char name[255];
unsigned char data[50];
unsigned int offset;
i = *arrayPosition;
while(buffer[i] != '\0')
{
if((buffer[i] & 0xC000) == 0xC000)
{
你確定你不修改函數內某個函數的值嗎?插入數據時您是否取消引用指針? – Jack 2009-11-29 02:09:12
一些風格問題:在C(但不是C++)中,它通常被認爲是不好的風格來轉換'malloc'的返回值,因爲'void *'被隱式轉換爲任何其他指針類型。另外,'sizeof(char)'在C(和C++)中總是1,所以乘以它是多餘的。第二行代碼應該是這樣的:'recvBuf = malloc(RECVBUF);'。 – bcat 2009-11-29 02:13:01
我認爲大多數編譯器會刪除冗餘。有時它只是用來編寫更清晰的代碼:size_of_item * number_of_items – Jack 2009-11-29 02:16:41