請各位大神幫忙
我不知道哪個才是對的...
這個簡單,
把Code打上去,
Compiler之後就知道了...
另外你自己也要下功夫去學C語言,
這不是甚麼很困難的問題...
#include <stdio.h>
int main() {
float ary[] = {1, 2, 3, 4, 5, 6, 7, 8, 9 };
float *ptr = ary;
float *pEnd = ary + sizeof(ary)/sizeof(float) - 1;
printf("--- 基礎資料 ---\n");
while (ptr <= pEnd) {
printf("pointer = %p \t value = %f\n", ptr, *ptr);
ptr++;
}
printf("--- 基礎資料 ---\n");
float *ptr2 = ary;
printf("--- 乘以10 ---\n");
while (ptr2 <= pEnd) {
*ptr2 *= 10.0;
ptr2++;
}
float *ptr3 = ary;
printf("--- 新資料 ---\n");
while (ptr3 <= pEnd) {
printf("pointer = %p \t value = %f\n", ptr3, *ptr3);
ptr3++;
}
printf("--- 新資料 ---\n");
return 0;
}
執行結果:
--- 基礎資料 ---
pointer = 0x7ffee939da90 value = 1.000000
pointer = 0x7ffee939da94 value = 2.000000
pointer = 0x7ffee939da98 value = 3.000000
pointer = 0x7ffee939da9c value = 4.000000
pointer = 0x7ffee939daa0 value = 5.000000
pointer = 0x7ffee939daa4 value = 6.000000
pointer = 0x7ffee939daa8 value = 7.000000
pointer = 0x7ffee939daac value = 8.000000
pointer = 0x7ffee939dab0 value = 9.000000
--- 基礎資料 ---
--- 乘以10 ---
--- 新資料 ---
pointer = 0x7ffee939da90 value = 10.000000
pointer = 0x7ffee939da94 value = 20.000000
pointer = 0x7ffee939da98 value = 30.000000
pointer = 0x7ffee939da9c value = 40.000000
pointer = 0x7ffee939daa0 value = 50.000000
pointer = 0x7ffee939daa4 value = 60.000000
pointer = 0x7ffee939daa8 value = 70.000000
pointer = 0x7ffee939daac value = 80.000000
pointer = 0x7ffee939dab0 value = 90.000000
--- 新資料 ---
我多加了把 pointer 印出來, pointer 部分,不同機器執行結果不一定相同.
這裡是IT作業問答區...
寫得很詳細,我是老師的話會給超過一百分!但要看人(不是人人都開外掛,昨天連ARRAY都不會,今天就把指標給秒殺了!這樣指標很可撥ㄟ...QAQ
我是老師的話,
我可能會跟他說,
你跟我解釋一下這是什麼意思...
這有什麼, 昨天連四則運算都不會, 今天就可以交微積分作業了...
被雷劈到,然後愛因斯坦附身!
連指標都印出來了。太神了。
我是希望他能好好學習.至於說以後怎樣努力,就看他自己了.
難吧...
這題就考指標和取值而已,連我沒怎麼摸C的都會。這樣還說連google都不知道是不是對的,除非他不是資訊相關科系,我是建議讓他重修對他比較好。
這跟資訊相關科系無關,
我也不是資訊相關學系,
但是這題我大學的時候就會了...
不過其實我學程式的時候不是上課的時候,
(雖然計概都不會但還是過了 XD
不過真的是低空飛過...)
反而是後來自己去學的...
我覺得這種東西需要興趣...
但如果是相關學系又沒興趣...
真的是要好好考慮轉系...
不是資訊相關科系,學C沒啥屁用啊,反而是課程設計出問題吧。XD
現在又不是只有C可以學,一堆易學的程式語言不安排入課程,然後叫非相關科系的從C入門,那真的不會就算了。
指標的寫法嗎?
好久沒練習C語言了
#include <stdio.h>
void forEach(void *ary, int size, int count, void (*func)(void *data));
void mulTen(void *data);
void printData(void *data);
int main()
{
float ary[] = {1, 2, 3, 4, 5, 6, 7, 8, 9 };
int size=sizeof(*ary);
int count=sizeof(ary)/sizeof(*ary);
printf("before:\n");
forEach(ary, size, count, printData);
forEach(ary, size, count, mulTen);
printf("\nafter:\n");
forEach(ary, size, count, printData);
return 0;
}
void forEach(void *ary, int size, int count, void (*func)(void *data))
{
int i;
for(i=0; i<count; ++i) {
func((char*)ary+i*size);
}
}
void mulTen(void *data)
{
*(float*)data=*(float*)data*10;
}
void printData(void *data)
{
printf("%.2f ",*(float*)data);
}