C语言基础
进击的小豪
这个作者很懒,什么都没留下…
展开
-
二维数组
在内存中还是一维数组,以每一行为一个元素 a[i][j]编译器解析为*(*(a + i) + j) int a[3][4]的a[i][j]在内存中的地址a+4*i+j 1、array[0]与array都是数组首地址,两者指向对象不同 array + 1:指向第二行 array[0] + 1:指向第一行第二个元素 int *p; p = array[0]; 2、数组名作地址表示其中元素 *array <=> array[0] array[i][j]: 1) 用二维数组名:*(*(array原创 2021-01-21 22:42:46 · 219 阅读 · 0 评论 -
sizeof用法注意
sizeof sizeof(数组名):返回数组所有元素占有的内存空间字节数 int count[26]; memset(count, 0, sizeof(count)); 或者 memset(count, 0, sizeof(int) * 26); sizeof(指针):返回计算机系统的地址字节数,如果是32位系统,返回4;16位系统,返回2 int* p = count; sizeof(int); //4 ...原创 2021-01-20 21:28:18 · 182 阅读 · 0 评论 -
宏定义:取最大值MAX&MIN
C语言宏定义#define max(a,b) a>b?a:b 有什么隐患? 据说要这样写:#define max(a,b) ((a)>(b)?(a):(b)),如果不加括号有什么不一样吗? 因为宏定义是在预编译阶段把宏的内容拷贝的源代码的相应位置 如果#define max(a,b) a>b?a:b这样写的话 那么如下表达式 max(a,b)+1就展开为a>b?a:b+1 冒号后面就是b+1了,自然和当初愿望不一样,算完max再加一违背了 所以要加上括号。 ...原创 2020-12-06 16:32:42 · 3113 阅读 · 0 评论