Re: [問題] 迴圈裡面宣告的變數
※ 引述《robertshih (施抄)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: gcc version 4.5.2
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 無
: 問題(Question):
: for(i=0; i<100; i++){
: char str[100];
: printf("str = %p\n", str);
: ...
: }
: 在這100次的迴圈中, 我需要每次都有一個新的array,
: 所以在迴圈中宣告變數, 希望每次都是不同的address.
: 可是output顯示, 這些str的都是同一個,
: 請問有無辦法讓每次迴圈中的str都是不同的值(address).
: 我知道使用malloc可以達到這個效果, 請問有無不用malloc的辦法?
: 另外這個100是舉例, 事實上我並不知道我總共會須要用幾個str,
: 所以無法事先宣告.
: 謝謝
以下只是個人的拙見
有錯請各位大大們幫忙指正
我來說明一下我的code
#include<stdio.h>
#define len 100
typedef char String[100];
String s[0];
int main(void){
int i;
String *p=s;
for(i=0;i<100;i++){
printf("str = %p\n",p);
p++;
}
return 0;
}
一般而言 如果宣告array[n]
代表array 是有n個陣列
如果是array[0] 呢
0個陣列 就像指標
由於宣告的是陣列 所以本身會在可使用的地方
還有一點是 因為c並不會判斷是否超過宣告的範圍
他允許超出陣列 在陣列之後的他不會去定義
一切都得看系統決定 所以也有 segment fault的風險
不過要宣告array[0]還要看compiler
一些老舊的compiler並不會去處理就是了
現在還有直接宣告array[]的作法
不過似乎是屬於C9x的?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.128.241
※ 編輯: firejox 來自: 123.240.128.241 (04/17 01:01)
推
04/17 01:07, , 1F
04/17 01:07, 1F
推
04/17 01:23, , 2F
04/17 01:23, 2F
→
04/19 12:28, , 3F
04/19 12:28, 3F
→
04/19 23:11, , 4F
04/19 23:11, 4F
討論串 (同標題文章)