導航:首頁 > 數據處理 > 怎麼給指針地址中的數據清零

怎麼給指針地址中的數據清零

發布時間:2023-01-31 08:43:46

① c語言中如何將結構中變數清空

1、首先,我們寫好整個函數的框架,也就是頭文件和Main函數。

② 台達plc怎麼寫指針清零程序

你可以判斷數據變化啊 如果1秒或者符合的時間內數據沒有增加 說明中斷 你就可以清零了 或者如果計數信號來源x 那麼Xoff是不是計數就停止了

③ c語言數組怎麼清零

c語言不能對這個數組賦值,只能通過遍歷數組達到給數組中每個元素賦值的目的。初始化的時候可以用inta[4]={0};這樣給整個數組元素賦值為0,若想給已初始化的數組清零,也只能遍歷數組。

在C語言中,所謂的「清空」,意思是「無視裡面的數據」,而不是「讓裡面沒有數據」。有時候可能需要把一個數組清零,意思是全部數據都用0填充,可以用庫函數來實現。假設數組名為a,無論什麼類型也無論幾維都一樣,可以寫成memset(a,0,sizeof(a));

(3)怎麼給指針地址中的數據清零擴展閱讀:

在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指針數組、結構數組等各種類別。

關於可變長數組(VLA)的問題:原來的C89標准中是不允許可變長數組出現的,但是在C99標准中,加入了對VLA的支持,但是支持的編譯器不多,而且由於棧溢出的安全問題,沒有太多的人敢用這個可變長數組,所以在C11標准中又把它規定為可選實現的功能了。

④ 使寄存器清零,除了採用CLRN輸入低電平的方法外,可否通過左移或右移的方法來實現

可以通過左移和右移方法實現。也可用並行的行送數法。

這組寄存器存放的內容是某一段內地址偏移量,用來形成操作數地址,主要在堆棧操作和變址運算中使用。BP和SP寄存器稱為指針寄存器,與SS聯用,為訪問現行堆棧段提供方便。

通常BP寄存器在間接定址中使用,操作數在堆棧段中,由SS段寄存器與BP組合形成操作數地址即BP中存放現行堆棧段中一個數據區的「基址」的偏移量,所以稱BP寄存器為基址指針。

(4)怎麼給指針地址中的數據清零擴展閱讀:

結構:

在數字電路中,用來存放二進制數據或代碼的電路稱為寄存器。寄存器是由具有存儲功能的觸發器組合起來構成的。一個觸發器可以存儲1位二進制代碼,存放門位二進制代碼的寄存器需用逐個觸發器來構成。

由電平觸發的動作特點可知,在CLK高電平期間,Q端的狀態跟隨D端狀態的改變而改變;CLK變成低電平以後,Q端將保持CLK變為低電平時刻D端的狀態。

⑤ 用C語言怎麼清除1602中的一小段數據

1、設置指針void *P,p=1602,memset()函數清零,如果是動態開辟的就要用free。

2、常式:

/*ME300B單片機開發系統演示程序-DS18B20溫度顯示*/
/*LCD1602顯示*/
/*******************************************************************/
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^3;//定義DS18B20埠DQ
sbitBEEP=P3^7;//蜂鳴器驅動線
bitpresence;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
ucharcodecdis1[]=;
ucharcodecdis2[]=;
ucharcodecdis3[]=;
ucharcodecdis4[]=;
unsignedchardatatemp_data[2]=;
unsignedchardatadisplay[5]=;
unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
voidbeep();
unsignedcharcodemytab[8]=;
#definedelayNOP();;
/*******************************************************************/
voiddelay1(intms)
{
unsignedchary;
while(ms--)
{
for(y=0;y<250;y++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/******************************************************************/
/*檢查LCD忙狀態*/
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。*/
/******************************************************************/
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
delayNOP();
result=(bit)(P0&0x80);
LCD_EN=0;
return(result);
}
/*寫指令數據到LCD*/
/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。*/
/*******************************************************************/
voidlcd_wcmd(ucharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
/*******************************************************************/
/*寫顯示數據到LCD*/
/*RS=H,RW=L,E=高脈沖,D0-D7=數據。*/
/*******************************************************************/
voidlcd_wdat(uchardat)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayNOP();
LCD_EN=1;
delayNOP();
LCD_EN=0;
}
/*LCD初始化設定*/
/*******************************************************************/
voidlcd_init()
{
delay1(15);
lcd_wcmd(0x01);//清除LCD的顯示內容
lcd_wcmd(0x38);//16*2顯示,5*7點陣,8位數據
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x0c);//顯示開,關游標
delay1(5);
lcd_wcmd(0x06);//移動游標
delay1(5);
lcd_wcmd(0x01);//清除LCD的顯示內容
delay1(5);
}
/*設定顯示位置*/
/*******************************************************************/
voidlcd_pos(ucharpos)
{
lcd_wcmd(pos|0x80);//數據指針=80+地址變數
}
/*自定義字元寫入CGRAM*/
/*******************************************************************/
voidwritetab()
{
unsignedchari;
lcd_wcmd(0x40);//寫CGRAM
for(i=0;i<8;i++)
lcd_wdat(mytab[i]);
}
/*us級延時函數*/
/*******************************************************************/
voidDelay(unsignedintnum)
{
while(--num);
}
/*初始化ds1820*/
/*******************************************************************/
Init_DS18B20(void)
{
DQ=1;//DQ復位
Delay(8);//稍做延時
DQ=0;//單片機將DQ拉低
Delay(90);//精確延時大於480us
DQ=1;//拉高匯流排
Delay(8);
presence=DQ;//如果=0則初始化成功=1則初始化失敗
Delay(100);
DQ=1;

return(presence);//返回信號,0=presence,1=nopresence
}
/*讀一個位元組*/
/*******************************************************************/
ReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//給脈沖信號
dat>>=1;
DQ=1;//給脈沖信號
if(DQ)
dat|=0x80;
Delay(4);
}
return(dat);
}
/*寫一個位元組*/
/*******************************************************************/
WriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
Delay(5);
DQ=1;
dat>>=1;
}
}
/*讀取溫度*/
/*******************************************************************/
Read_Temperature(void)
{
Init_DS18B20();

WriteOneChar(0xCC);//跳過讀序號列號的操作
WriteOneChar(0x44);//啟動溫度轉換
Init_DS18B20();
WriteOneChar(0xCC);//跳過讀序號列號的操作
WriteOneChar(0xBE);//讀取溫度寄存器
temp_data[0]=ReadOneChar();//溫度低8位
temp_data[1]=ReadOneChar();//溫度高8位
}
/*數據轉換與溫度顯示*/
/*******************************************************************/
Disp_Temperature()
{
display[4]=temp_data[0]&0x0f;
display[0]=ditab[display[4]]+0x30;//查表得小數位的值

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
display[3]=display[4]/100+0x30;
display[1]=display[4]%100;
display[2]=display[1]/10+0x30;
display[1]=display[1]%10+0x30;
if(display[3]==0x30)//高位為0,不顯示
{
display[3]=0x20;
if(display[2]==0x30)//次高位為0,不顯示
display[2]=0x20;
}
lcd_pos(0x48);
lcd_wdat(display[3]);//百位數顯示
lcd_pos(0x49);
lcd_wdat(display[2]);//十位數顯示
lcd_pos(0x4a);
lcd_wdat(display[1]);//個位數顯示
lcd_pos(0x4c);
lcd_wdat(display[0]);//小數位數顯示
}
/*******************************************************************/
/*蜂鳴器響一聲*/
/*******************************************************************/
voidbeep()
{
unsignedchary;
for(y=0;y<100;y++)
{
Delay(60);
BEEP=!BEEP;//BEEP取反
}
BEEP=1;//關閉蜂鳴器
Delay(40000);
}
/*DS18B20OK顯示菜單*/
/*******************************************************************/
voidOk_Menu()
{
ucharm;
lcd_init();//初始化LCD

lcd_pos(0);//設置顯示位置為第一行的第1個字元
m=0;
while(cdis1[m]!='')
{//顯示字元
lcd_wdat(cdis1[m]);
m++;
}
lcd_pos(0x40);//設置顯示位置為第二行第1個字元
m=0;
while(cdis2[m]!='')
{
lcd_wdat(cdis2[m]);//顯示字元
m++;
}
writetab();//自定義字元寫入CGRAM
delay1(5);
lcd_pos(0x4d);
lcd_wdat(0x00);//顯示自定義字元
}
/*DS18B20ERROR顯示菜單*/
/*******************************************************************/
voidError_Menu()
{
ucharm;
lcd_init();//初始化LCD
lcd_pos(0);//設置顯示位置為第一行的第1個字元
m=0;
while(cdis3[m]!='')
{//顯示字元
lcd_wdat(cdis3[m]);
m++;
}
lcd_pos(0x40);//設置顯示位置為第二行第1個字元
m=0;
while(cdis4[m]!='')
{
lcd_wdat(cdis4[m]);//顯示字元
m++;
}
}
/*主函數*/
/************************************/
voidmain()
{
Ok_Menu();
do
{
Read_Temperature();
Disp_Temperature();
}
while(!presence);
Error_Menu();
do
{
Init_DS18B20();
beep();
}
while(presence);
}

⑥ 如何清空指針數組指向的數據

最為簡單的方法是把指針作為數組,使用下標方法直接刪除。 如: char arr[] = "abcdef"; char *p = arr; p[2] = 0;//刪除第三個元素數據

⑦ C語言 大俠來看一下如何清空我這個指針。

我去,你就不能用點有意義的單詞或者拼音給變數或者指針命名么,咱不是大俠,so,抱歉~~
不過我倒是看懂你的程序是要幹嘛的了,不過你要清空的是h這個指針么?

⑧ memset清空指針是怎麼用的

Memset用來對一段內存空間全部設置為某個字元,一般用在對定義的字元串進行初始化為'
'或'\0';
例:char a[100];
memset(a, '\0', sizeof(a));
memset可以方便地清空一個結構體類型的變數或數組。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
對於變數
struct sample_strcut stTest;
一般情況下,清空stTest的方法:
stTest.csName[0]='\0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是數組:
struct sample_struct TEST[10];

memset(TEST,0,sizeof(struct sample_struct)*10);
memcpy 用來做內存拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度

例:char a[100],b[50]; memcpy(b, a, sizeof(b));
注意如果用memcpy(b,a,sizeof(a)),很可能會造成b的內存地址溢出。
Strcpy就只能拷貝字元串了,它遇到'\0'就結束拷貝。
例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字元串長度(第一
個『\0』之前)是否超過50位,如超過,則會造成b的內存地址溢出。
str也可以用用個參數的strncpy(a,b,n)

⑨ 如何實現用C語言編寫一個對可用數據內存清零程序

只能用指針實現,例如,要將內存第25個單元開始到第49個內部RAM單元清零,可以這樣寫:
unsigned char *Ptr = (unsigned char data *)25;
unsigned char i;
for(i = 0;i<25;i++)
{
*(Ptr+i) = 0;
}
如果是要將外部RAM第25個單元開始到第49個單元清零,可以這樣寫
unsigned char *Ptr = (unsigned char xata *)25;
unsigned char i;
for(i = 0;i<25;i++)
{
*(Ptr+i) = 0;
}

⑩ C++類裡面的指針如何清除

在析構函數里清除
~A(){
if ( pc )
delete pc ;
} ;
指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變數單元,可以說,地址指向該變數單元。因此,將地址形象化的稱為"指針"。意思是通過它能找到以它為地址的內存單元。在高級語言中,指針有效地取代了在低級語言,如匯編語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法地址之中。指針參考了存儲器中某個地址,通過被稱為反參考指針的動作,可以取出在那個地址中存儲的值。作個比喻,假設將電腦存儲器當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指針;根據便利粘貼面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指針進行反參考的動作。

閱讀全文

與怎麼給指針地址中的數據清零相關的資料

熱點內容
產品流光怎麼拍 瀏覽:244
網站上上傳的信息如何排序 瀏覽:312
學生登記表頁面設置數據是多少 瀏覽:928
企業代理開戶的銀行卡怎麼激活 瀏覽:829
長治有什麼古玩市場 瀏覽:720
如何代理小黃車 瀏覽:127
冷門產品視頻怎麼拍攝 瀏覽:117
技術學院軟體哪個好 瀏覽:246
離婚調解包括什麼程序 瀏覽:344
目標點是輸哪個數據 瀏覽:747
小程序訪問許可權在哪裡 瀏覽:823
如何微信小游戲遷移到微信小程序 瀏覽:648
消毒隔離技術包括哪些 瀏覽:931
交易貓未發貨怎麼收貨 瀏覽:115
恆昌惠誠信息咨詢怎麼樣 瀏覽:435
期權交易中如何修煉心性 瀏覽:554
信管家是哪個交易所 瀏覽:925
電腦如何看內存條信息 瀏覽:259
如何刪去手機中的系統數據 瀏覽:753
程序編碼憑證怎麼做 瀏覽:483