『壹』 怎樣獲得數組中某一個指定數據所在的位置
怎樣獲得數組中某一個指定數據所在的位置
main()
{
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}
本常式序中用了兩個並列的for循環語句,在第二個for 語句中又嵌套了一個循環語句。第一個for語句用於輸入10個元素的初值。第二個for語句用於排序。本程序的排序採用逐個比較的方法進行。在i次循環時,把第一個元素的下標i賦於p,而把該下標變數值a[i]賦於q。然後進入小循環,從a[i+1]起到最後一個元素止逐個與a[i]作比較,有比a[i]大者則將其下標送p,元素值送q。一次循環結束後,p即為最大元素的下標,q則為該元素值。若此時i≠p,說明p,q值均已不是進入小循環之前所賦之值,則交換a[i]和a[p]之值。 此時a[i]為已排序完畢的元素。輸出該值之後轉入下一次循環。對i+1以後各個元素排序。
7.2 二維數組的定義和引用
『貳』 PB中如何得到一個字元串變數的地址
下面是我的測試代碼:
在st_1內會寫出分配的空間句柄。
st_2內會寫出a=255,b=255,c=255
il_menuDataPointer= LocalAlloc(0,6) //分配內存 6=sizeof(menuitemdata)
st_1.text = string(il_menuDataPointer)
is_text.a = 255
is_text.b = 255
is_text.c = 255
iis_text.a = 0
iis_text.b = 0
iis_text.c = 0
//寫入數據
CopyMemory(il_menuDataPointer,is_text,6)
//從內存塊中取出數據
CopyMemory(iis_text,il_menuDataPointer,6)
st_2.text = "a=" + string(iis_text.a) + ",b=" + string(iis_text.b) + ",c=" + string(iis_text.c)
『叄』 如何在c語言中定義一個變數在一個絕對地址
C中的「變數」用標識符表示,叫「變數名」;變數名的管理有一套對編程者透明的機制,所以不能將變數定義在一個程序員主觀想像的地方。但指針變數例外,因為指針變數的值是地址值,所以可以將一個具體數值強制為同類型指針再賦給指針變數,如int *p=(int *)1234567;,這就把1234567這個地址值賦給指針變數p了——但這是很危險的操作,不僅不提倡,通常是禁止的,只是語法上合法。
『肆』 怎麼獲得一個指針變數所指向的地址的值
說白了P本身也是個變數,存儲的時地址而已,正常用為*p,取得是數據,如果直接用p那就是地址了。可以試試。
『伍』 在Delphi 中如何得到一個函數的地址
在DELPHI定義回調函數應該將該函數/過程定義為類或數據類型如
TmyCallBack=function():boolean;stdcall;
定義回調函數
function myCallBack:boolean;
begin
//code.....
end;
在調用時使用如下:
procere MyCallBackSmaple(MyCall:TmyCallBack);
begin
if assigned(MyCall) then//檢查MyCall是否為空
MyCall;
end;
『陸』 Linux中的原子變數如何取地址,如何給定義的原子變數賦指定的地址
首先請確定你要做原子操作的對象是誰?是一個地址,還是地址指向的數據?
如果把數據做為原子對象,直接對數據進行原子操作即可,數據的指針不用做原子操作。
『柒』 如何獲取數據結構的地址
"獲取 @stPS.hDevMode的地址
invoke wsprintf,addr szBuffer,addr szFormatPrt,addr @stPS.hDevMode
用addr @stPS.hDevMode 為什麼達不到效果?"
應該是addr的問題,addr要求後面的內容必須在引用前定義,也就是說@stPS.hDevMode 這個局部變數的成員在前面你沒有定義。
有兩種解決方法:
1.不用addr,用offset。即寫為:
push offset szBuffer
push offset szFormatPrt
push offset @stPS.hDevMode
call wsprintf
2.在引用前先定義@stPS.hDevMode
在代碼段:
.data?
@stPS.hDevMode dd ?
....
.code
「我還有一個疑問就是 eax 2次被附值 卻得到預期效果 ?」
你是說這兩句吧?
mov eax,@stPS.hDevMode
mov eax,[eax] ;現在eax是DEVMODE結構的地址
這兩句就是取@stPS.hDevMode的地址,就相當於
tmp = @stPS.hDevMode;
tmp = &tmp;
最後eax中是@stPS.hDevMode的地址。
希望對你能有所幫助~~~~~
『捌』 數據塊中的地址怎麼定義
可以再PLC中將需要讀取的MD寄存器傳送至DB區,然後在組態王中讀取DB的地址,設置好數據類型就可以了。數據塊是一組按順序連續排列在一起的幾組記錄,是主存儲器與輸入、輸出設備或外存儲器之間進行傳輸的一個數據單位。是數據的物理記錄,與數據的邏輯記錄(邏輯上有聯系,在存儲器上佔有一組鄰接單元的數據單位)之間的對應關系有3種方式:①一個塊即為一個記錄;②一個塊包含若干個邏輯記錄;③一個邏輯記錄佔有幾個塊。數據塊的大小可以是固定的或是可變的,塊與塊之間有間隙。設計數據塊大小,受到多方面因素的影響,包括輸入、輸出效率,存儲空間代價以及計算機應用特點等。
『玖』 在C語言中如果已經知道了一個數據的內存地址,怎樣直接從內存中讀取出該數據
要讀取內存數據的話,只能通過指針,你只能通過自己定義一個int的指針,讓他指向一個內存地址,然後通過*指針的形式讀出來。
你說的「我不想通過指針變數來直接輸出該int數據的值,而是想直接讀取內存的數據,看看和我定義的int數據值是否相同。」是沒意義的,就好像你要確定我這個人是不是我這個人一樣,如果你一定要寫的話,可以寫成這樣。
#include<stdio.h>
int main()
{
int a=123,b=1234567;
int adda=&a,addb=&b;
int *m,*n;
m=adda;
n=addb;
//printf("*m=%d\t,*n=%d\n",*m,*n); //這里不用指針變數直接輸出int數據
printf("m=%d\t,n=%d\n",a,b);
return 0;
}
這里的m和n已經和a,b沒有任何邏輯聯系了,他們只是表示兩個內存段的數據而已。
再明確點可以寫成
#include<stdio.h>
int main()
{
int a=123,b=1234567;
int adda=&a,addb=&b;//adda和addb僅僅表示兩個內存地址
int contenta,contentb;
contenta=*adda;
contentb=*addb;//這兩句的含義是兩個內存地址裡面的內容,他們和變數a,b沒有邏輯關系
//printf("*m=%d\t,*n=%d\n",contenta,contentb); //這里不用指針變數直接輸出int數據
printf("m=%d\t,n=%d\n",a,b);
return 0;
}
這里就是你說的比較a以及a所在的內存塊(adda)裡面內容是不是和a相等
『拾』 C語言如何獲得變數的物理地址以及簡單的寫
只能獲得進程空間的虛擬地址