2008年10月11日 星期六

基礎指標

void test (int *c)
{
    *c=31;
}

int main(void)
{
    int a=3;

    test(&a);

    printf("%d\n", a);

    return 0;
}

---------------------------------------

void test (char **c)
{
    *c="hi";
}

int main(void)
{
    char *a="hello";

    test(&a);

    printf("%s\n", a);

    return 0;
}

-----------------------------------------

void getMem(char **ptr)
{
    *ptr = (char*)malloc(100);
}
int main(void)
{
    char *str = NULL;
    getMem(&str);
    strcpy(str, "Hello C/C++ programming");
    printf("%s\n", str);

    free(str);
    return 0;
}
------------------------------------------
  #define ROW 8
  #define COL 64
  
  char **getMem()
  {
      int i=0;
      char **ptr =(cahr **)malloc(sizeof(char*) * ROW);
      for (i = 0; i <ROW; i++)
          ptr[i] =(cahr *)malloc(sizeof(char *) * COL);
      return ptr;
  }
  int main(void)
  {
      int i=0;
      char **str = getMem();
      strcpy(*str, "123");
      strcpy(*(str+1), "456");
      printf("%s, %s", *str, *(str+1));
      for (i = 0; i <ROW; i++)
          free(str[i]);
      free(str);
  }

------------------------------------------

int test2(char *input, int len)
{
    char *test="hello world";
    strncpy(input, test, len);
    return 0;
}

int test(char input[][16])
{
    char *test="hello world";
    strncpy(input[0], test, 16);
    strncpy(input[1], "jojo", 16);

    return 0;
}

int main(void)
{
    char input[16][16]= {'\0'};
    test(input);
    test2(input[2], 16);
    test2(input[3], 16);

    printf("input=%s\n", input[0]);
    printf("input=%s\n", input[1]);
    printf("input=%s\n", input[2]);
    printf("input=%s\n", input[3]);
    return 0;
}

沒有留言:

張貼留言