西宁市城乡规划建设局网站,公司注册要求,ps个人网页设计模板,网页设计的合适尺寸是多少如下为错误#xff0c;打印断错误。 具体原因参考 http://c.biancheng.net/view/2022.html 二维字符数组与char** 关系 原因#xff1a; char a[2][20] ; 这是一个二维字符数组。 二维字符数组#xff0c;这里相当于是两个一维字符串数组。这两个数组在内存的存放位置可以…如下为错误打印断错误。 具体原因参考 http://c.biancheng.net/view/2022.html 二维字符数组与char** 关系 原因 char a[2][20] ; 这是一个二维字符数组。 二维字符数组这里相当于是两个一维字符串数组。这两个数组在内存的存放位置可以是在不同位置。不是连续分布 而 char **pstr ;指针指向的可以认为是一连串的字符区域。 所以同样是指向字符串首地址但是采用*pstr 时取到的是不同内存地址的东西。就会出现断错误了。
#include stdio.h #define M 2 #define N 100
void test(const char** pstr) { int i 0; for(i 0; i 2; i) { printf(array[%d] %s/n, i,*(pstri)); } return; }
int main() { char char_array[M][N] {a.txt, b.txt}; test((const char**) char_array); return 0; }
二维字符数组 与指针 指针的解引用 char names[3][30]{zhang4zhang5zhang6}; 打印方法 一 for (int i0;i3;i) { printf(names[%d]%s\n,i,*(namesi)); } 打印方法 二 for (int i0;i3;i) { printf(names[%d]%s\n,i,names[i])); } 为什么可以采用方法一 打印 如何理解 char names[3][30] ; 定义一个数组names[3] ,它的数组元素 也是 char [30] 类型。 所以names[0] 就可以表示 里面的一维数组也就是names[0] 是这个一维数组1的首地址。 同理names[01] 是这个一维数组元素2的首地址。 char ** 指向的是一个连续的字符串空间。
int (*p)[4] a; 这里也可以叫做行指针
括号中的*表明 p 是一个指针它指向一个数组数组的类型为int [4]这正是 a 所包含的每个一维数组的类型。 #include stdio.h int main(){ int a[3][4] { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; int (*p)[4] a; printf(%d\n, sizeof(*(p1))); return 0; }