一维数组、二维数组 和 一维指针、二维指针的本质区别

您所在的位置:网站首页 数组指针指向一维数组 一维数组、二维数组 和 一维指针、二维指针的本质区别

一维数组、二维数组 和 一维指针、二维指针的本质区别

2023-12-09 07:22| 来源: 网络整理| 查看: 265

一维数组、二维数组 和 一维指针、二维指针的本质区别

数组和指针极其相似,他们的访问、查询、赋值操作是一模一样的,但指针和数组还是有区别的·,就是他的初始化,数组的初始化是自动的,而指针是被动的,数组一定义就自动的获得了一个被定义大小的空间,并和其相关联、不可改变,可以直接用来存储数据;而指针刚定义出来时没有分配储存数据的空间的,要你人为分配空间给它

像下面的二维指针的定义、使用就和能说明问题

#include #include int main() { int *p; //一维指针的定义和使用 int i; int size = 10; p = (int *)malloc(sizeof(int) * size); //给一维指针分配内存空间 for(i=0; i printf("%d\n", *(p+i));//the function is same as below //printf("%d\n", p[i]); } return 0; } #include #include int main() { int **arr; //二维指针的定义 int m=3,n=4,i,j; arr = (int **)malloc(sizeof(int*)*m); //给该二维指针的第一维分配一个大小 //为m的空间,即把空间首地址赋给它 //该空间用于储存第二维分配到的空间的首地址 //第一维的空间存地址 for(i=0; i arr[i][j] = i*10+j; //*(*(arr+i)+j) = i*10+j; //*(arr[i]+j) = i*10+j; } } for(i=0; i //printf("%d ", arr[i][j]); //printf("%d ", *(*(arr+i)+j)); printf("%d ", *(arr[i]+j)); } printf("\n"); } for(i=0; i // cout // cout cin>>a[2][i]; } for(int i = 0; i {‘q’,‘w’,‘e’,‘r’,‘t’,‘y’,‘u’,‘i’,‘o’,‘p’}, {‘a’,‘s’,‘d’,‘f’,‘g’,‘h’,‘j’,‘k’,‘l’}, {‘z’,‘x’,‘c’,‘v’,‘b’,‘n’,‘m’,LITE_KEYSYM_BACKSPACE}, {LITE_KEYSYM_INPUT_METHOD,LITE_KEYSYM_INPUT_MODE,’ ‘,LITE_KEYSYM_CAPS_LOCK,LITE_KEYSYM_ENTER}, }; static const char _keyboard_upper[4][10]= { {‘Q’,‘W’,‘E’,‘R’,‘T’,‘Y’,‘U’,‘I’,‘O’,‘P’}, {‘A’,‘S’,‘D’,‘F’,‘G’,‘H’,‘J’,‘K’,‘L’}, {‘Z’,‘X’,‘C’,‘V’,‘B’,‘N’,‘M’,LITE_KEYSYM_BACKSPACE}, {LITE_KEYSYM_INPUT_METHOD,LITE_KEYSYM_INPUT_MODE,’ ‘,LITE_KEYSYM_CAPS_LOCK,LITE_KEYSYM_ENTER}, }; static const char _keyboard_num[4][10]= { {‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘0’}, {’@’,’$’,’%’,’&’,’*’,’-’,’/’,’(’,’)’}, {’!’,’`’,’:’,’;’,’,’,’?’,’.’,LITE_KEYSYM_BACKSPACE}, {LITE_KEYSYM_INPUT_METHOD,LITE_KEYSYM_INPUT_MODE,’ ',LITE_KEYSYM_CAPS_LOCK,LITE_KEYSYM_ENTER}, };

static const char (*_keyboard_char[])[10]={ _keyboard_lower, _keyboard_upper, _keyboard_num, };



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3