當前位置:首頁 » 編程語言 » 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);


}

}

熱點內容
c語言五子棋程序 發布:2025-01-27 12:58:43 瀏覽:156
win10流媒體伺服器怎麼搭建 發布:2025-01-27 12:58:04 瀏覽:383
組合公式的演算法 發布:2025-01-27 12:45:50 瀏覽:277
落櫻小屋哪裡下載安卓 發布:2025-01-27 12:35:13 瀏覽:71
微信伺服器IP跳轉 發布:2025-01-27 12:26:54 瀏覽:73
oracle自動備份腳本linux 發布:2025-01-27 12:21:40 瀏覽:936
pop伺服器密碼怎麼填 發布:2025-01-27 12:20:02 瀏覽:968
oraclesqlnumber 發布:2025-01-27 12:04:22 瀏覽:849
如何看三才配置數理暗示力 發布:2025-01-27 12:04:15 瀏覽:811
我的世界離線2b2t的伺服器 發布:2025-01-27 11:51:25 瀏覽:144