月度归档:2015年07月

linux c 何时用 . 何时使用->

linux c中 .和 ->的区别
例:
//定义结构体

#include < stdio.h>
struct a {
int b;
int c;
int d;
} a; // 定义结构体变量

int main()
{
struct a *info; //定义一个结构体指针
info = a; //info指向a 结构体变量
a.c = 100; //结构体赋值
printf(“%d”,info->c); //打印出指针对对应的变量
return;
}

通过以上变量可以看出

访问结构体变量成员时,使用 . ()
通过指针访问结构体变量时,使用 ->

linux c memcpy函数用法


1 函数简介

此函数的主要功能是将任意内容从一个对象(结构体 数组 类)复制到另一个对象。
这种复制可能会替换以前对象中存在的数据。

2 函数原型:

void *memcpy(void *dest, const void *src, size_t n);

3 头文件

#include < memory.h>

4 参数

dest: 待替换对象起始位置
src: 替换对象的起始位置
n: 替换的长度

5 函数源码分析:

void *memcpy(void *desc,const void * src,size_t size)
{
if((desc == NULL) && (src == NULL))
{
return NULL;
}
unsigned char *desc_ = (unsigned char*)desc; //转换为字节指针
unsigned char *src_ = (unsigned char*)src;
while(size >0)
{
*desc_ = *src_; //按字节一个字节一个字节的复制对象
desc_++;
src_++;
size–;
}
return desc;
}

6 举例说明

例1:
将一串字符串复制到一个数组中
#include < stdio.h>
#include < memory.h>
int main()
{
char *a =”information copy!”;
char b[60];

memcpy(b,a,strlen(a)+1);
printf(“b is %s\n”,b);
return 1;
}

例2:
字符串替换数组
#include < stdio.h>
#include < memory.h>
int main()
{
char *a =”information copy!”;
char b[60]=”abcdefghijklmnopqrsyuvwxyz123″;

memcpy(b,a,strlen(a));
printf(“b is %s\n”,b);
return 1;
}

7 函数应用场景

结构体缓存
read 有缓存数据