數據類型轉換指針易錯點

C語言在處理變量賦值的情況下經常使用到函數memcpy();

memcpy( )函數的使用方法如下:

void * memcpy (void * dest ,const void *src, size_t n);
說明:memcpy()用來拷貝src所指的內存內容前n個字節到dest所指的內存地址上。與strcpy()不同的是,memcpy()會完整的複製n個字節,不會因爲遇到字符串結束'\0'而結束。


memcpy()函數使用過程中一般不會出現什麼問題,使用特定的數據類型,然後根據數據類型確定該數據類型所佔的字節數;


--------------------------------------------------------------

函數的變量賦值易錯點,使用指針過程中,float型轉double類型:

例如:

void test(float val[3]){
	printf("function test\r\n");
}

void main(){
	double g_val[3];
	test(g_val);//有人會理解爲這裏小類型轉化爲大類型比較正常,不會發生精度損失,但是重點在於他們所佔的字節數不一樣,這裏傳進來的是指針,所以得到的值並不是我們需要的,存在越界的情況,所以值非法;
}

切記:只用指針的時候一定要注意數據類型匹配;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章