C指针臆想
指针,众所周知,时为一内存地址.抛开OS级别或更低的硬件级别不说,仅对应用内的使用进行小小的臆测讨论.
首先,在应用内,用malloc申请到的一块地址应该是连续的(猜测,逻辑上连续,实际上物理如何分布不予关注).
其次,数据存在在内存中都是以2进制形式存放.不存在数据类型,因此,对内存数据的操作,只要遵循进出类型一致即可.
此处的进,是指将数据存放到内存中,如存进一个int型的数据,读取的时候按int读取即可,存储一个char*的数据,按char*读取即可.
#define mAlloc(p,size)\
{\
errno=0;\
if((p=(char*)malloc(sizeof(char)*size)))==null){\
printf("malloc error[%d]\n",errno);\
exit(-1);\
}\
memset(p,0,sizeof(char)*size);\
}\
#define setInt(p,v) (*(int*)(p)=v)
#define setStr(p,v,size) strcpy(p,v)
int main()
{
char *p;
mAlloc(p,10);
setInt(p,100);
printf("int:%d\n",*(int*)p);
setStr(p+sizeof(int),"abc");
printf("str:%s\n",p+sizeof(int));
return 1;
}
相关文档:
在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是:
1、基于C的文件操作;
2、基于C++的文件操作;
3、基于WINAPI的文件操作;
4、基于BCB库的文件操作;
5、特殊文件的操作。
壹、基于C的文件操作
在ANSI C中, ......
经过几次面试,发现笔试题基本上都是那几道,没有什么创新或者改变,总结出来给大家参考参考.
一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分)
请写出 BOOL flag 与“零值”比较的 if 语句。(3分)
标准答案:
if ( flag )
& ......
联系1-9编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。
#include "stdio.h"
main(){
int c;
int flag;
flag=0;//是否空格标志
while ((c=getchar())!=EOF){
if (c!=32) {
putchar(c);
flag=0;
}else if(flag==0){
flag=1;
putchar(c);
}
/* ......
c库函数详解——assert
函数名: assert
功 能: 测试一个条件并可能使程序终止
用 法: void assert(int test);
程序例:
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
struct ITEM {
int key;
int value;
};
/* add item to ......
上一篇中我们已经了解如何在Python程序和C模块之间进行值的相互传递,现在我们来进入实作阶段,看看如何将一个C语言开发的开源mp3编解码库LAME包装为一个Python下可以使用的扩展模块。首先去http://lame.sourceforge.net/download.php下载LAME的源代码,然后切换到root用户编译源代码,./configure
make
make instal ......