c語言存儲結構
1. c語言數據類型的存儲結構
32位系統為例:int,
float,
unsigned
int都是佔4個位元組,double是8個位元組。
以int
i=0x01020304為例,在Big
Endian操作系統下(比如蘋果的OSX),在內存里的4個位元組分別是:0x01
0x02
0x03
0x04。在Little
Endian系統下(比如windows),4個位元組分別是0x04
0x03
0x02
0x01。
2. C語言中,數據結構存儲結構屬於線性還是非線性
這個不能一概而論
通常所說的數組是線性存儲的,還有數據結構書中說的線性表,
鏈表通常是非線性的
其他的數據結構數據結構存儲結構包括順序存儲結構和鏈式存儲結構;
順序結構:數據元素存放的地址是連續的-----線性的存儲;
鏈式結構:數據元素存放的地址是否連續沒有要求----非線性的存儲
3. C語言中數據的存儲結構指的是什麼
數據結構,也就是數據是如何管理的。
比如你要管理學生,那麼,每個學生都有姓名、年齡、性別,這三個元素可以組合成一個結構體,這就是數據結構。
如果你要管理多個學生,那麼就可以用你剛剛定義的結構體類型,再定義一個結構體數組,數組的每個成員就是一個學生。那麼就管理了多個學生。
不知道你懂了沒~
4. c語言結構體的存儲
書上寫的 fread(&student[i],sizeof(struct studnt ),1,fp)
這里書上應該是一個靜態鏈表,所以才有了student[i]這樣的變數,事實上&是有必要的,因為fread第一個參數要求地址,結構體名不是地址
void store (struct student *head)
{
int a;
FILE *fp;
fp=fopen("student.date","wb");
fscanffp,"%d",a);
struct student *P =(struct student *) malloc(sizeof(struct student ));
P->data = a;
P->next = head->next;
head->next = P;
}
5. 大一c語言存儲結構試題
行序存儲,每行6個元素,a[5][5]前共有5×6+5=35個元素,所以其地址為:0x1020+35*4=0x10ac
列序存儲,每列8個元素,a[5][5]前共有5×8+5=45個元素,所以其地址為:0x1020+45*4=0x10d4
6. C語言數據存儲結構問題
由於node2是一個指針,所以不能用node2.strValue
應該為node2->strValue
如果要用node2.strValude,則node2的定義應該為struct Parameter node2
請注意指針變數與非指針變數的區別
7. C語言中數據的存儲結構指的是什麼啊
首先說下,你的程序定義了2個T,是重復定義,編譯不能通過的,把共用體名定義成其它的(例如T2)
接下來說說共用體類型:
共用體類型和結構體類似,都是由不同的數據類型所組成的,區別是結構體類型的變數是分別存放的,而共用體類型的變數是存放在同一段內存空間的。這段內存空間的大小由共用體中成員的類型決定,占據內存空間最大的成員所佔的位元組數就是共用體變數所佔的位元組數。(摘自《Visual C++ 開發技術大全》P53)
由這段話可以看出你那個程序里的共用體所佔空間應該和double型的一樣即8位元組, 加上int型的4位元組,答案是12位元組,選C
不過不知道為什麼,用我的VC++6.0寫的這個程序:
#include<iostream.h>
struct T {
int w;
union T2 U;
};
void main()
{
cout<<sizeof(int)<<", "<<sizeof(double)<<endl;
cout<<sizeof(T)<<endl;
}
輸出:
4 8
16
說T類型所佔空間是16,不知道為什麼,知道的請解釋下。
不過你的答案里沒有16這個選項,所以可以不用考慮我後面說的。
8. c語言實現線性表的順序存儲結構
#include "stdio.h"
#include "stdlib.h"
int main()
{ int a[10],i,j,k,t,x;
for(i=0;i<9;i++)
a[i]=rand()%100; //給數組賦隨機值范圍0-100
for(i=0;i<8;i++) //數組從小到大排序
for(j=i+1;j<9;j++)
if(a[i]>a[j])
{ t=a[i];a[i]=a[j];a[j]=t;
}
//輸出一維數組中的數
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
//向數組插入一個數x
scanf("%d",&x);
if(x>a[8]) a[9]=x;
else if(x<a[0])
{
for(i=9;i>0;i--)
a[i]=a[i-1];
a[0]=x;
}
else
{for(i=0;i<8;i++)
if(x>a[i]&&x<a[i+1]) k=i+1;
for(j=9;j>k;j--)
a[j]=a[j-1];
a[k]=x;
}
//輸出插入後的數組
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
//刪除數組中的一個元素
//輸入要刪除的元素的下標
scanf("%d",&k);
for(i=k;i<10;i++)
a[i]=a[i+1];
//輸出刪除後的數組
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
}
9. c語言數據結構的表示(儲存結構)用類型定義(typedef)描述怎樣分配空間
typdef 定義結構體,所得變數存儲結構與結構體是一樣的。
typedef stuct stxx{
char i;
int j;
}defxx;
defxx xx;//定義變數
struct styy{
char i;
int j;
}yy;
xx 和yy的存儲結構完全一樣。
而結構體的存儲結構則與你的機器字長,編譯器類型和編譯的參數設置有關。
如你使用的編譯器支持位元組對齊,並且你設定了位元組對齊,那你定義的變數就是按照位元組一個挨著一個,如果你沒有設置位元組對齊,那每個變數的存儲空間就是結構體裡面最長的那個成員所佔的空間。
10. c語言的存儲結構不是有順序存儲和鏈式存儲嗎
雙向鏈表和二叉樹都是數據結構,一種數據結構是不能用來描述另一種數據結構的存儲方式的。
一定要分清楚存儲方式,和數據結構。