01/10/2018, 16:04

Hàm memset thực sự làm gì?

Cho mình hỏi hàm memset thực sự làm gì? Mình có đoạn code sau:

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
	int *p=new int;
	memset(p,1,sizeof(int));
	cout<<*p<<endl;
}

Và nó in ra 16843009. Mình nghĩ kết quả phải là biểu diễn của dãy nhị phân 32 bit 1 -> 2^(32)-1

rogp10 viết 18:09 ngày 01/10/2018

Đơn vị cơ bản là byte mà dòng này không ra được 0xFFFFFFFF đâu.

Văn Dương viết 18:05 ngày 01/10/2018

memset nhận 3 tham số.
Tham số thứ 1 là địa chỉ bắt đầu.
Tham số thứ 2 là giá trị mà sẽ set cho một byte.
Tham số thứ 3 là số byte liên tiếp được set tính từ địa chỉ (tham số đầu tiên).

Như ví dụ trên nó set 4 byte của một số int, mỗi byte có giá trị bằng 1. => giá trị sau khi hàm memset chạy là 0x01010101.

Bài liên quan
0