当前位置:首页 » 编程语言 » c语言绑定

c语言绑定

发布时间: 2022-04-22 04:01:46

A. c语言中定义一个指针和一个局部变量,给这个指针绑定地址前打印其内存地址。指针地址不变,局部变量地址

首先你的描述令我感觉逻辑很混乱,不知道你到底讲了个什么事情……

然后我想说的是

指针也是一个变量,它存储的内容就是一个地址(类型由指针变量类型决定)

比如说
int a;
int *b;
a和b都是变量,只不过a可以存储的值是一个int型,而b可以存储的是一个int型的地址

B. c语言如何编写捆绑某个文件(比如abc.txt)的程序 要求是当双击"abc.txt"的时候,就

C. c语言将两个初始变量绑定在一起来合为一个整体变量

写一个结构体,比如:

structtStudent
{
intnumber[300];
charname[300];
};

D. 关于c语言如何捆绑上下左右四个键

上下左右没有对应的ascii码。在按下方向按键的时候会out组合码,也就是一次按键,两个getch都会有值。
代码修改成
===============
#include

void
main()
{
int
c,d;
c
=
getch();
d
=
getch();
printf("[
%d
%d
]\n",c,d);
}
===============
得到以下结果
[
224
72
]
[
224
80
]
[
224
75
]
[
224
77
]
参照http://..com/question/144253607.html,会有一个更方便的代码,让你连续获取ascii。

E. C语言中如何将位与它所在字节捆绑

#define (if(X){cbi(X);}) \
(if( bit_is_set(PORTB,X) {cbi(PORTB,X);} ))

上面这样写行不?是单片机的操作吧。呵呵。

附上宏定义的知识,你看看吧。

C语言宏定义总结
转自:http://topcool99.ycool.com/post.1797687.html

宏定义了一个代表特定内容的标识符。
预处理过程会把源代码中出现的宏标识符替换成宏定义时的值。
宏最常见的用法是定义代表某个值的全局符号。
宏的第二种用法是定义带参数的宏,这样的宏可以象函数一样被调用,但它是在调用语句处展开宏,并用调用时的实际参数来代替定义中的形式参数。

1.#define指令
#define MAX_NUM 10
int array[MAX_NUM];
for(i=0;i<MAX_NUM;i++) /*……*/
#define VERSION "Version 1.0 Copyright(c) 2003"
2.带参数的#define指令
#define IS_EVEN(n) ((n)%2==0)
#define MAX(x,y) ((x)>(y) ? (x) :(y))
#define Cube(x) (x)*(x)*(x)
可以是任何数字表达式甚至函数调用来代替参数x。
3.#运算符
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。例如:
#define _STR(s) #s
#define WARN_IF(EXP) \
do{ if (EXP) \
fprintf(stderr, "Warning: " #EXP "\n"); } \
while(0)
那么实际使用中会出现下面所示的替换过程:
WARN_IF (divider == 0);

被替换为

do
{
if (divider == 0)
fprintf(stderr, "Warning" "divider == 0" "\n");
} while(0);
这样每次divider(除数)为0的时候便会在标准错误流上输出一个提示信息。

再例如下面的例子:
#define FILL(a) {a, #a}

enum IDD{OPEN, CLOSE};
typedef struct MSG{
IDD id;
const char * msg;
}MSG;

MSG _msg[] = {FILL(OPEN), FILL(CLOSE)};
相当于:
MSG _msg[] = {{OPEN, "OPEN"},
{CLOSE, "CLOSE"}};

4.##运算符
##运算符用于把参数连接到一起。
预处理程序把出现在##两侧的参数合并成一个符号。
看下面的例子:

#define NUM(a,b,c) a##b##c
#define STR(a,b,c) a##b##c

main()
{
printf("%d\n",NUM(1,2,3));
printf("%s\n",STR("aa","bb","cc"));
}

最后程序的输出为:
123
aabbcc
再看下面的例子:
struct command
{
char * name;
void (*function) (void);
};

#define COMMAND(NAME) { NAME, NAME ## _command }

// 然后你就用一些预先定义好的命令来方便的初始化一个command结构的数组了:

struct command commands[] = {
COMMAND(quit),
COMMAND(help),
...
}

COMMAND宏在这里充当一个代码生成器的作用,这样可以在一定程度上减少代码密度,间接地也可以减少不留心所造成的错误。我们还可以n个##符号连接 n+1个Token。比如:
#define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d

typedef struct _record_type LINK_MULTIPLE(name,company,position,salary);
// 这里这个语句将展开为:
// typedef struct _record_type name_company_position_salary;
5.特殊的宏
#error指令将使编译器显示一条错误信息,然后停止编译。
#line指令可以改变编译器用来指出警告和错误信息的文件号和行号。
#pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。
...在C宏中称为Variadic Macro,也就是变参宏。

Compiled on Dec 23 1996 at 22:18:48

6.预定义宏
__LINE__ 被编译的文件的行数
__FILE__ 被编译的文件的名字
__DATE__ 编译的日期(格式"Mmm dd yyyy")
__TIME__ 编译的时间(格式"hh:mm:ss")
__STDC__ 如果编译器接受标准C,那么值为1

printf("Compiled on %s at %s\n", __DATE__, __TIME__);

每次程序开始执行,程序都会显示,用于确认版本:
Compiled on Dec 23 1996 at 22:18:48
下面的宏可以帮助我们查明错误的根源:

#define CHECK_ZERO(divisor) \
if (divisor == 0) \
printf("*** Attempt to divide by zero on line %d " \
"of file %s ***\n",__LINE__, __FILE__)

CHECK_ZERO宏应该在除法运算前被调用:
CHECK_ZERO(j);k = i / j;
如果j是0,会显示出如下形式的信息:
*** Attempt to divide by zero on line 9 of file FOO.c ***
通用的、用于错误检测的宏——assert宏;

7.注意
宏名和参数的括号间不能有空格;
宏替换只作替换,不做计算,不做表达式求解;
函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存;
函数只有一个返回值,利用宏则可以设法得到多个值;
宏展开使源程序变长,函数调用不会;
宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值);
使用条件编译可以使目标程序变小,运行时间变短;
预编译使问题或算法的解决方案增多,有助于我们选择合适的解决方案。

F. c语言怎么把库函数这些的与exe文件绑定在一起啊

可以把相应的动态库.dll文件与.exe文件一块打包,这样比较方便,而且其他的.exe文件可以共享这些动态库.dll文件。也可以把库与.exe文件静态编译,这样就变成一个可以直接运行的.exe文件了,但是比较复杂,你可以网络一下相关静态编译的教程!

希望对你有帮助!

G. 在C语言中怎样随机取数,设置种子,并与当前时间绑定

#include <stdlib.h>
#include <time.h>

int a;

srand(time(NULL));//设置种子

a=rand(); //取一个随机数

H. C语言中能否实现动态绑定机制。。。

大炮理论上也是可以打蚊子的。也就是说C++和C其实差别还是有的。不用想着如何用C去实现C++中的东西,C中没有继承,没有多态,要什么绑定呢?C语言有自己的优势,把握住C的优势就是最好的。

I. 请教sybase数据库C语言CT Library 如何绑定decimal类型数据

CS_DECIMAL 绑定不上去
我代码是这样写的 ,有啥问题啊
CS_DECIMAL csje;
sprintf (sql_command,"select ny,pl,sprq,ccrq,cc,fzdm,dzdm,zzdm,ddjdm,xb,lc,sy2,rs,je*10 from %s..kptj_09 where ny='%s' and left(fzdm,2)='14' and pl in ('K','B','T','M','F','Y','G','V') and yl in ('G','C') ",gs_Syb_Database,ny);
rtnval=ct_command(cmd_ptr,CS_LANG_CMD,sql_command,strlen(sql_command),CS_UNUSED);
if (rtnval!=SUCCESS) return FAILURE;
rtnval=ct_send(cmd_ptr);
if (rtnval!=SUCCESS) return FAILURE;
while ((rtnval=ct_results(cmd_ptr,&result_type))==CS_SUCCEED)
{
switch ((int)result_type)
{
case CS_ROW_RESULT:
rtnval = ct_res_info(cmd_ptr, CS_NUMDATA, &num_columns, CS_UNUSED, NULL);
if (rtnval==FAILURE) return FAILURE;
for (i=1;i<=num_columns;i++)
{
rtnval=ct_describe(cmd_ptr, i, &rowdesc[i-1]);
}

rtnval=ct_bind(cmd_ptr, 1, &rowdesc[0], rjhzl.ny,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 2, &rowdesc[1], pl,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 3, &rowdesc[2], rjhzl.sprq,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 4, &rowdesc[3], rjhzl.ccrq,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 5, &rowdesc[4], rjhzl.cc,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 6, &rowdesc[5], rjhzl.fzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 7, &rowdesc[6], rjhzl.dzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 8, &rowdesc[7], rjhzl.zzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 9, &rowdesc[8], rjhzl.ddjdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 10, &rowdesc[9], rjhzl.xb,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 11, &rowdesc[10], &rjhzl.lc,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 12, &rowdesc[11], &rjhzl.sy2,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 13, &rowdesc[12], &csrs,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 14, &rowdesc[13], &csje,NULL,NULL); //---------DECIMAL 类型

while ( ((rtnval=ct_fetch(cmd_ptr,CS_UNUSED,CS_UNUSED,CS_UNUSED,(CS_INT*)NULL)) == CS_SUCCEED)
|| (rtnval == CS_ROW_FAIL))
{
if (rtnval==CS_ROW_FAIL)
continue;
printf("lc:%d--rs:%f--je:%f--sy2:%d\n",rjhzl.lc,csrs,csje,rjhzl.sy2); //-----------csje 绑定不成功,显示全是 0.00

}
if (rtnval != CS_END_DATA)
return FAILURE;
break;
case CS_CMD_SUCCEED:
break;
case CS_CMD_DONE:
break;
case CS_CMD_FAIL:
break;
}

J. C语言 随机产生10个手机号,不能重复。输入英文名后绑定手机号,一个名字一个手机号

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

constintPHONE_LENGTH=11;

constchar*PREFIX="139";

typedefstruct{

intavailable;
charnumber[PHONE_LENGTH+1];
charowner_name[31];
}PhoneNumber;


voidphoneNumberGenerator(PhoneNumber*phones,intsize,constchar*prefix);
voiddisplayPhoneNumber(PhoneNumber*phones,intsize);
intmain(void)
{


chartname[31];
intid;
PhoneNumberphones[10];

phoneNumberGenerator(phones,10,PREFIX);

displayPhoneNumber(phones,10);
while(1)
{
puts("请输入您的姓名");
scanf("%s",tname);

puts("请输入您喜欢号码的编号");
scanf("%d",&id);

if(phones[id].available)
{
strcpy(phones[id].owner_name,tname);

phones[id].available=0;

displayPhoneNumber(phones,10);
}else
{
puts("此号已被占用,请选择其他的号码");

}}return0;
}


voidphoneNumberGenerator(PhoneNumber*phones,intsize,constchar*prefix)
{

intrepeat;//重复标志变量

for(inti=0;i<size;++i)
{

strncpy(phones[i].number,prefix,strlen(prefix));//复制号码前缀
phones[i].available=1;//初始化号码为可用
strcpy(phones[i].owner_name,"unknow");//初始化号码的拥有着为"unknow"//开始产生号码
do{

repeat=0;
/*******************产生一个随机号码******************/
for(intj=strlen(prefix);j<PHONE_LENGTH;++j)
{
(phones[i].number)[j]=rand()%10+'0';

}
(phones[i].number)[PHONE_LENGTH]='';

/************************检测重复性**************************/
for(intk=0;k<i;k++)
{
if(strcmp(phones[i].number,phones[k].number)==0)
{
repeat=1;
break;

}

}
}while(repeat);//如果当前产生的号码与之前的重复了,则再生成一个,直到不重复为止

}}


voiddisplayPhoneNumber(PhoneNumber*phones,intsize)
{


printf("%-5s%-20s%-10s%s ","编号","号码","状态","拥有者");
for(inti=0;i<size;++i)
{


printf("%-5d%-20s%-10s%s ",i,phones[i].number,phones[i].available?"可用":"已占用",phones[i].owner_name);


}

}

热点内容
梵蒂冈顶级时装ftp 发布:2025-01-28 03:03:36 浏览:694
手游脚本有前途吗 发布:2025-01-28 02:46:55 浏览:378
抓包编程 发布:2025-01-28 02:42:41 浏览:929
安卓平板上怎么设置热点 发布:2025-01-28 02:36:33 浏览:717
如何在手机上压缩图片 发布:2025-01-28 02:34:09 浏览:989
服务器ip挂上公网 发布:2025-01-28 02:31:15 浏览:978
吃鸡配置需要什么条件 发布:2025-01-28 02:26:15 浏览:9
58怎么上传简历 发布:2025-01-28 02:17:45 浏览:38
限制访问的ip 发布:2025-01-28 02:16:16 浏览:238
火车上车厢密码是多少 发布:2025-01-28 02:16:13 浏览:210