2024年8月20日 星期二

二維陣列指標的表示方法

 




雙重指標

 #include <stdio.h>

#include <stdlib.h>


unsigned int x = 10;

unsigned int *ptr = &x;

unsigned int **pptr = &ptr;


const char *p[4] = {"PIC16", "PIC18", "PIC24", "DSPIC"};

const char **pp = &p[0]; // const char **pp = p;

void string_access(const char **str_ptr)

{

    unsigned char i = 0;

    unsigned char ch;


    do

    {

        ch = *(*str_ptr+i);

        printf("%c",ch);

        i++;

    }

    while(ch != '\0');

    printf("\n");

}


int main(void)

{

    printf("x value = %d\n", x);

    printf("x address = %p\n", &x);

    printf("ptr address = %p\n", &ptr);

    printf("ptr point to = %p\n", ptr);

    printf("ptr point value = %d\n", *ptr);

    printf("pptr address = %p\n", &pptr);

    printf("pptr point to %p\n", pptr);

    printf("*pptr point to %p\n", *pptr);

    printf("pptr point value = %d\n", **pptr);

    printf("---------------------------\n");

    string_access(&*pp);

    pp++;

    string_access(&*pp);

    pp++;

    string_access(&*pp);

    pp++;

    string_access(&*pp);


    system("pause");

    return 0;

}





2024年8月19日 星期一

使用C語言存取二維陣列,並計算陣列ROW與COLUMN的數量

 #include <stdio.h>

#include <stdlib.h>


int array[4][5] = {

    {'p', 'i', 'c', '1', '6'},

    {'p', 'i', 'c', '1', '8'},

    {'p', 'i', 'c', '2', '4'},

    {'d', 's', 'p', 'i', 'c'}

};


int len;

int rows, column;

int *begin = array;    // get the begin address of array

int *end = *(&array + 1);  // get the address after array last address

int x, y;

int main(void)

{

    len = end - begin;                  // calculate total len

    rows = *(&array+1)-array;           // get the total values of row

    column = *(&array[0]+1) - array[0]; // get the total values of column

    printf("begin = %p\n", begin);

    printf("end = %p\n", end);

    printf("len = %d\n", len);

    printf("rows = %d\n", rows);

    printf("column = %d\n", column);


    for(y = 0; y < rows; y++)

    {

        for(x = 0; x < column; x++)

        {

            printf("array[%d][%d] = %c\n", y, x, array[y][x]);

        }

        printf("\n");

    }


    system("pause");

    return 0;

}






2024年8月17日 星期六

C語言存取二維字元陣列的方法

 #include <stdio.h>

#include <stdlib.h>


#define ROW 4

#define LEN 5

char array[ROW][LEN] = {

    {'P', 'I', 'C', '1', '6'},

    {'P', 'I', 'C', '1', '8'},

    {'P', 'I', 'C', '2', '4'},

    {'D', 'S', 'P', 'I', 'C'}

};

char *ptr = &array;

unsigned char row, column;

int main(void)

{

    printf("access using array method\n");

    for(row = 0; row < 4; row++)

    {

        for(column = 0; column < 5; column++)

        {

            printf("%c", array[row][column]);

        }

        printf("\n");

    }

    printf("----------------------------------\n");

    printf("access using array method\n");

    for(row = 0; row < ROW; row++)

    {

        for(column = 0; column < LEN; column++)

        {

            printf("%c", *ptr++);

        }

        printf("\n");

    }

    printf("access using array + pointer method\n");

    for(row = 0; row < 4; row++)

    {

        for(column = 0; column < 5; column++)

        {

            printf("%c", *(array[row] + column));

        }

        printf("\n");

    }

    printf("----------------------------------\n");

    printf("access using pointer method\n");

    for(row = 0; row < 4; row++)

    {

        for(column = 0; column < 5; column++)

        {

            printf("%c", *(*(array+row)+column));

        }

        printf("\n");

    }

    printf("----------------------------------\n");

    printf("access using ptr point to array method\n");

    for(row = 0; row < 4; row++)

    {

        for(column = 0; column < 5; column++)

        {

            printf("%c", *(ptr + (row * 5) + column));

        }

        printf("\n");

    }




    while(1)

    {


    }

    system("pause");

    return 0;

}












C語言存取二維字串陣列(使用陣列或指標)

 #include <stdio.h>

#include <stdlib.h>


char str[4][6] = {

    {"PIC16"},

    {"PIC18"},

    {"PIC24"},

    {"DSPIC"}

};


unsigned char row, column;


int main(void)

{

    printf("access string using array method\n");

    for(row = 0; row < 4; row++)

    {

        column = 0;

        while(str[row][column] != 0x00)

        {

            printf("%c",str[row][column]);

            column++;

        }

        printf("\n");

    }

    printf("----------------------------------\n");

    printf("access string using array + pointer method\n");

    for(row = 0; row < 4; row++)

    {

        column = 0;

        while((*(str[row]+column)) != 0x00)

        {

            printf("%c", *(str[row]+column));

            column++;

        }

        printf("\n");

    }



    while(1)

    {


    }

    system("pause");

    return 0;

}














C語言存取字串指標陣列

 #include <stdio.h>

#include <stdlib.h>


char *str[4] = {"PIC16", "PIC18", "PIC24", "DSPIC"};


unsigned char row = 0, column = 0;


#define NULL 0x00


int main(void)

{

    printf("access string using pointer method\n");

    for(row = 0; row < 4; row++)

    {

        column = 0;

        while(*(*(str+row) + column) != NULL)

        {

            printf("%c", *(*(str+row) + column));

            column++;

        }

        printf("\n");

    }

    printf("----------------------------------------\n");


    printf("access string using array+pointer method\n");

    for(row = 0; row < 4; row++)

    {

        column = 0;

        while(*(str[row]+column) != NULL)

        {

            printf("%c",*(str[row]+column));

            column++;

        }

        printf("\n");

    }


    while(1)

    {


    }

    system("pause");

    return 0;

}



二維陣列指標的表示方法