1. 前言
void類型在基本數(shù)據(jù)類型里是空類型
,無類型
;
void類型常用來當做函數(shù)的返回值,函數(shù)形參聲明,表示函數(shù)沒有返回值,沒有形參。
void類型不能用來定義變量,因為它是空類型–可以理解為空類型
。
void abc; //這是錯誤的
但是void
是可以定義指針的,void*
表示萬能型指針類型,可以與任何指針類型進行轉(zhuǎn)換,特別是內(nèi)存拷貝里用的很多。
2. 內(nèi)存拷貝函數(shù) memcpy
系統(tǒng)提供函數(shù): 內(nèi)存拷貝函數(shù)
#include
void *memcpy(void *dest, const void *src, size_t n);
**示例代碼:**memcpy函數(shù)過程
#include
#include
#include
int main(int argc,char **argv)
{
char str1[]="1234567890";
char str2[100];
int int_a[]={1,2,3,4,5,6,7,8,9,0};
int int_b[10];
int a=200;
int b;
int i;
//拷貝字符串數(shù)組
memcpy(str2,str1,sizeof(str1));
printf("str1=%s\n",str1);
printf("str2=%s\n",str2);
//拷貝整數(shù)數(shù)組
memcpy(int_b,int_a,sizeof(int_a));
for(i=0;i<10;i++)
{
printf("%d ",int_a[i]);
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d ",int_b[i]);
}
printf("\n");
//拷貝變量
memcpy(&b,&a,sizeof(a));
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
3. 自己編寫memcpy函數(shù)
#include
#include
#include
void my_memcpy(void *p1,const void *p2,int cnt);
int main(int argc,char **argv)
{
char str1[]="1234567890";
char str2[100];
int int_a[]={1,2,3,4,5,6,7,8,9,0};
int int_b[10];
int a=200;
int b;
int i;
//拷貝字符串數(shù)組
my_memcpy(str2,str1,sizeof(str1));
printf("str1=%s\n",str1);
printf("str2=%s\n",str2);
//拷貝整數(shù)數(shù)組
my_memcpy(int_b,int_a,sizeof(int_a));
for(i=0;i<10;i++)
{
printf("%d ",int_a[i]);
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d ",int_b[i]);
}
printf("\n");
//拷貝變量
my_memcpy(&b,&a,sizeof(a));
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
/*
內(nèi)存拷貝函數(shù)
*/
void my_memcpy(void *p1,const void *p2,int cnt)
{
char *str1=(char*)p1;
char *str2=(char*)p2;
int i;
for(i=0;i;i++)>
4. 內(nèi)存初始化函數(shù): memset
memset函數(shù)常用于內(nèi)存空間初始化,可以給空間賦初始值。
#include
//void *memset(void *s, int c, size_t n);
//函數(shù)功能: 將指定空間賦值為指定的值。
#include
#include
#include
int main(int argc,char **argv)
{
int int_b[10];
int b;
int i;
//memset(void *s, int c, size_t n);
memset(int_b,0,sizeof(int_b));
//拷貝整數(shù)數(shù)組
for(i=0;i<10;i++)
{
printf("%d ",int_b[i]);
}
printf("\n");
//拷貝變量
memset(&b,0,sizeof(int_b));
printf("b=%d\n",b);
return 0;
}
5. 自己編寫memset
#include
#include
#include
void my_memset(void *p,int c,int n);
int main(int argc,char **argv)
{
int int_b[10];
int b;
int i;
//memset(void *s, int c, size_t n);
my_memset(int_b,0,sizeof(int_b));
//拷貝整數(shù)數(shù)組
for(i=0;i<10;i++)
{
printf("%d ",int_b[i]);
}
printf("\n");
//拷貝變量
my_memset(&b,0,sizeof(int_b));
printf("b=%d\n",b);
return 0;
}
void my_memset(void *p,int c,int n)
{
char *str=(char*)p;
int i;
for(i=0;i;i++)>
6. 讀寫int類型數(shù)據(jù)到文件
6. 讀寫int類型數(shù)據(jù)到文件
在文件讀寫中,經(jīng)常需要向文件里讀寫自定義數(shù)據(jù)。
#include
#include
int write_file();
int read_file();
int main(int argc,char **argv)
{
write_file();
read_file();
return 0;
}
int write_file()
{
int cnt;
int a=123;
/*1. 打開文件*/
FILE *fp=fopen("test.txt","wb");
if(fp==NULL)
{
printf("文件打開失敗.\n");
return -1;
}
/*2. 寫入數(shù)據(jù)*/
cnt=fwrite(&a,1,sizeof(a),fp);
printf("成功寫入%d字節(jié)",cnt);
/*3. 關(guān)閉文件*/
fclose(fp);
return 0;
}
int read_file()
{
int cnt;
int a;
/*1. 打開文件*/
FILE *fp=fopen("test.txt","rb");
if(fp==NULL)
{
printf("文件打開失敗.\n");
return -1;
}
/*2. 讀取數(shù)據(jù)*/
cnt=fread(&a,1,sizeof(a),fp);
printf("成功讀取%d字節(jié)\n",cnt);
printf("a=%d\n",a);
/*3. 關(guān)閉文件*/
fclose(fp);
return 0;
}
-
C語言
+關(guān)注
關(guān)注
180文章
7594瀏覽量
135861 -
指針
+關(guān)注
關(guān)注
1文章
478瀏覽量
70491 -
void
+關(guān)注
關(guān)注
0文章
23瀏覽量
9850
發(fā)布評論請先 登錄
相關(guān)推薦
評論