相關問題
沒圖沒真相
範例程式碼
#include <stdio.h>#include <stdlib.h>
#include <stdint.h>
#define TEST_ITEM (6)
void foo()
{
char foo[] = {'a','b','c','d','e',0};
printf("foo string = [%s]\n", foo);
printf("foo char array = ");
for(uint8_t i=0;i<int(sizeof(foo)-1);i++)
{
printf("[0x%02X] ", foo[i]);
}
printf("\n");
}
void zoo()
{
char zoo[TEST_ITEM] = {0};
printf("zoo string = [%s]\n", zoo);
printf("zoo char array = ");
for(uint8_t i=0;i<sizeof(zoo);i++)
{
printf("[0x%02X] ", zoo[i]);
}
printf("\n");
}
void bar()
{
char bar[TEST_ITEM];
printf("bar string = [%s]\n", bar);
printf("bar char array = ");
for(uint8_t i=0;i<sizeof(bar);i++)
{
printf("[0x%02X] ", bar[i]);
}
printf("\n");
}
int main(int argc, char** argv)
{
printf("foo() --> zoo() --> bar()\n\n");
foo();
zoo();
bar();
printf("\nfoo() --> bar() --> zoo() --> bar()\n\n");
foo();
bar();
zoo();
bar();
return 0;
}
圖解
foo() --> zoo() --> bar()foo string = [abcde]
foo char array = [0x61] [0x62] [0x63] [0x64] [0x65]
zoo string = []
zoo char array = [0x00] [0x00] [0x00] [0x00] [0x00] [0x00]
bar string = []
bar char array = [0x00] [0x00] [0x00] [0x00] [0x00] [0x00]
foo() --> bar() --> zoo() --> bar()
foo string = [abcde]
foo char array = [0x61] [0x62] [0x63] [0x64] [0x65]
bar string = [abcde]
bar char array = [0x61] [0x62] [0x63] [0x64] [0x65] [0x00]
zoo string = []
zoo char array = [0x00] [0x00] [0x00] [0x00] [0x00] [0x00]
bar string = []
bar char array = [0x00] [0x00] [0x00] [0x00] [0x00] [0x00]
回家作業
- 除了手動測試外,有沒有更聰明一點的方式,可以幫你找到程式碼中,
未看先猜未初始化就使用的可能錯誤?

沒有留言:
張貼留言