Ejemplo n.º 1
0
int main (int argc, char * argv[])
{
//    printf("This is pointer!\n");
//    printf("%lu\n", sizeof(void *));
//    
//    int i = 10;
//    int *p = &i;
//    *p = 0;
//    printf("%d---%d\n", i, *p);

//    int a[5] = {1, 2, 3, 4, 5};
//    int *ptr = (int *)(&a+1);
//    int *c   = (int *)(&a);
//    printf("%d---%d---%d---%d\n", *(a+1), *(ptr-1), *c, (int)ptr);
//    printf("%d---%d---%d", (int)a, (int)&a, (int)(&a+1));
    
//    char * str = "ABCDEFGHIJKL";
//    int * p = (int *)str;
//    printf("%c---%c---%c\n", *str, *(str+1), *(char *)(p+2));
    
//    char ch = 'a';
//    int a = (int)ch;
//    printf("%d--%c\n", a, ch);
//    
//    int add = 123456;
//    int * p = (int *)add;
//    printf("%d----%d---%d\n", add, (int)p, sizeof(&add));

//    #define PI 3.14
//    int a = PI;
//    printf("%d---%d\n", a, PI);
    
//    char * str = "abcd";
//    printf("%s\d", str);
//    *str = "efgh";
//    printf("%s\n", str);
//    str[2] = "C";
//    printf("%s\n", str);
    
//    char* a = "abcd";
//    char* b = "efgh";
//    a[0] = 'i';
////    printf("%s\n", b);
//    puts(b);
    
//    int i = 1;
//    int *p = &i;
//    int **pp = &p;
//    printf("%d---%d---%d\n", i, *p, **pp);
    
    //ABCDE FGHIJ KLMNO PQRST
//    char a[5] = {'A', 'C', 'B', 'D'};
//    char (*p3)[5] = &a;
//    char (*p4)[5] = a;
//    printf("%c---%c---%c---%c\n", a[0], a[1], a[2], a[3]);
//    printf("%c---%c---%c---%c\n", p3[1], p4, p3+1, p4+1);
    
//    struct Test
//    {
//        int Num;
//        char *pcName;
//        short sDate;
//        char cha[2];
//        short sBa[4];
//    }*p;
//    printf("%x----%x----%x----%x\n", p, p+0x1, p+0x2, (unsigned long)p+0x1);
    
//    int a[4] = {1, 2, 3, 4};
//    int *ptr1 = (int *)(&a+1);
//    int *ptr2 = (int *)((int)a+4);
//    printf("%x----%x----%x\n", ptr1[-1], ptr2, a);
    
//    int a[5][5];
//    int (*p)[4];
//    p = a;
//    printf("%d-----%d------%d\n", &p[4][2]-&a[4][2], &a[4][2], &p[4][2]);
    
//    int a[2];
//    printf("%d---%d---%d----%d\n", &a[0], &a[1], &a[1]-&a[0]);
//    
//    int i = (int)(&a[0]);
//    int j = (int)(&a[1]);
//    printf("%d----%d----%d\n", i, j, j-i);
    
//    int i = 1;
//    int *p = &i+1;
//    printf("%d----%d----%d\n", &i, p, p-&i);
    
//    int a[5];
//    int *p = &a + 1;
//    printf("%d----%d\n", &a, p);
    
    char *str1, *str2 = NULL;
    str1 = getMemory1(str1, 10);
    strcpy(str1, "hello");
    printf("%s\n", str1);
    free(str1);
    printf("%s\n", str1);
    
    printf("%s\n", str2);
    getMemory2(&str2, 10);
    strcpy(str2, "helloworld");
    printf("%s\n", str2);
    free(str2);
    printf("%s\n", str2);
    
    return 0;
}
Ejemplo n.º 2
0
void testMemory1() {
	char* p = NULL;
	getMemory1(p);
	strcpy(p, "hello"); /* Error: break point, p is NULL. */
	printf(p);
}