頁:
[1]
關於struct陣列
如果我定義一個struct A{
int x;
int y;
} a;
那究竟這 a會是一個一維陣列還是二維的呢?
畢竟他存了兩個值
小弟有此一問
<div></div> 因為我碰到這樣的問題
(我對struct還非常不熟練)
code提供:
#include <stdio.h>
typedef struct Shape
{
int height;
int width;
} shape;
main()
{
int n, num, i, sum, j;
shape s;
scanf("%d", &num);
while(num--)
{
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d%d", &s.height, &s.width);
sum = 0;
for(i = 0; i < n; i++)
{
if(s.width = s.height)
sum += s.height;
else
sum = sum + s.height + s.width;
}
輸出("%d", sum);
}
}
我的height width 明明就輸入不同
可是為什麼進到迴圈之後
兩個值又會變的一樣呢?...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 一維 index 從 0 到 99
想像成 x = 0, x = 1, ... , x = 99 對應到 a ~ a
二維的話,是像這樣
a
想像成一個平面,x = 0, y = 0 對應到 a ...
if(s.width = s.height)
判斷等於是 == 不是 =
= 是指定值給他
會變成把 s.height 的值給 s.width
然後判斷 s.width 是否為 0 值
snowflying 發表於 2016-5-7 12:25 AM static/image/common/back.gif
一維 index 從 0 到 99
想像成 x = 0, x = 1, ... , x = 99 對應到 a ~ a
二維的話,是像這樣
謝謝snowflying大大
但是關於第一個問題好像沒有回答到QQ
我的意思是
struct開一維陣列時
存兩個變數
那他到底是屬於一維陣列?
還是二維(兩變數)...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> st474ddr 發表於 2016-5-10 06:31 PM static/image/common/back.gif
謝謝snowflying大大
但是關於第一個問題好像沒有回答到QQ
我的意思是
一般來說,維度是指陣列的,不會去計算裡面的成員
所以是一維陣列,每一個都擁有兩個成員
<br><br><br><br><br><div></div> 你就看成一為陣列就可以了 這樣宣告為一維的結構陣列,代表你有100個結構,每個結構裡有2個成員,
例如:
struct 麵包{麵粉, 糖} ary;所以現在我有100個麵包,每個麵包的材料都有麵粉和糖
不知道我這樣形容,你了解了嗎?
一維陣列
只是這陣列裡所使用的memory size 較大一點
以這2種struct為例:
struct A {
int a; // 佔 32bit (8 bytes)
};
struct B {
char b; // 佔 8bits (1 byte)
int c; // 佔 32bit (8 bytes)
};
在實際使用到的 memory 上,
A是用了 8bytes,
B是用了 1byte +8 bytes = 9 bytes ,
但OS為32/64 bit的話, 就會再做對齊(alignment)的動作,
所以 B 實際是用了 9 bytes --- alignment --> 16bytes
頁:
[1]