1. 前言
	void類型在基本數(shù)據(jù)類型里是空類型,無類型;
void類型常用來當做函數(shù)的返回值,函數(shù)形參聲明,表示函數(shù)沒有返回值,沒有形參。
	void類型不能用來定義變量,因為它是空類型–可以理解為空類型。
void abc;  //這是錯誤的
	但是void是可以定義指針的,void*表示萬能型指針類型,可以與任何指針類型進行轉換,特別是內存拷貝里用的很多。
2. 內存拷貝函數(shù) memcpy
系統(tǒng)提供函數(shù): 內存拷貝函數(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;
}
/*
內存拷貝函數(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. 內存初始化函數(shù): memset
	memset函數(shù)常用于內存空間初始化,可以給空間賦初始值。
#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ù)到文件
	在文件讀寫中,經常需要向文件里讀寫自定義數(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. 關閉文件*/
    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. 關閉文件*/
    fclose(fp);
    return 0;
}
                                        
                        聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
                        舉報投訴
                    
                    - 
                                C語言
                                +關注
關注
183文章
7636瀏覽量
144294 - 
                                指針
                                +關注
關注
1文章
484瀏覽量
71645 - 
                                void
                                +關注
關注
0文章
23瀏覽量
10182 
發(fā)布評論請先 登錄
相關推薦
                    熱點推薦
                  【設計技巧】指針的使用注意事項:空指針、指針賦值、void *指針
的類型多么復雜,比如一個特別大的結構體,它的指針和一個 char型指針的大小本質上是一樣的,因為指針就是起始地址。 正式由于這個原因,(void
    
                發(fā)表于 08-20 08:30        
                    
    
C語言指針必須要進行強制類型轉換?
 char c=255;[C] 純文本查看 復制代碼 pc=&c;[C] 純文本查看 復制代碼 pi=&i; pc=(char *)pi;//疑問處}既然所有
    
                發(fā)表于 03-06 04:14        
                    
    
C語言void及void指針深層探索
1.概述 本文將對void關鍵字的深刻含義進行解說,并詳述void及void指針類型的使用方法與技巧。 2.
    
                發(fā)表于 09-21 11:36        
                ?166次下載    
    
STM32編程:void指針高階用法舉例,設計一個通用掉電存儲子系統(tǒng)
一般被稱為通用指針或叫泛指針。它是C語言關于純粹地址的一種約定。當某個指針是void型
    
                發(fā)表于 12-27 18:47        
                ?10次下載    
    
                    
    
一文揭秘C語言的void指針
void *表示一個“不知道類型”的指針,也就不知道從這個指針地址開始多少字節(jié)為一個數(shù)據(jù)。和用int表示指針異曲同工,只是更明確是“
    
    
PLC指針類型與間接尋址詳解
在西門子S7-300和S7-400的編程中經常需要調用一些系統(tǒng)功能或功能塊,在輸入?yún)?shù)時經常碰到有指針類型的參數(shù),那么你對指針類型了解嗎?我第一次接觸
    
    
什么是C語言(void*)類型
大家在C語言的學習過程中肯定見過各種指針符號,如 int*, char*  等等等等。顧名思義,int*就是一個指向整形的指針,而char*則是一個指向字符的
    
    
          
        
        
C語言-void類型作為萬能指針類型
                
 
    
    
           
            
            
                
            
評論