【学习笔记-杂类】
计算机以及计算机语言的学习
橙子MORG
这个作者很懒,什么都没留下…
展开
-
【笔记】printf的输出顺序
学习的时候看到这么一道题目int arr[] = {6,7,8,9,10};int *ptr = arr;*(ptr++)+=123;printf(“ %d %d ”, *ptr, *(++ptr));我最开始以为答案是7,8但是给出的答案是8,8我百思不得其解,因为我还不清楚printf的参数计算顺序,我之前一直以为是从左向右。然后去网上查找,大多数解释是:printf参数运算...原创 2020-03-24 10:44:21 · 430 阅读 · 0 评论 -
【笔记】typedef常见用法(转)
1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义;array a声明等价于int a[2]声明扩展: typedef int ar...转载 2020-03-18 16:55:42 · 123 阅读 · 0 评论 -
【笔记】数组和指针作为参数
首先应该明白两点:1、C语言中,一维数组做参数时,编译器总是把它解析成一个指向数组首元素首地址的指针2、所有非数组形式的数据实参均以传值的形式调用。(对实参做一份备份并传递给函数,函数不能修改实参本身,只能修改传给它的拿份备份)一、数组作为参数下面举一些例子:void fun(char a[10]){ char c = a[3];}int main(void){ char ...原创 2020-03-06 21:33:16 · 217 阅读 · 0 评论 -
【笔记】二维数组的内存布局
内存都是线性的,那么二维数组的存储是怎样的?a[2][2]的内存布局如下图所示:知道了内存分布,那么有一道例题:int a[5][5];int (*p)[4];p = (int (*)[4])a; //这里要强制转换,不然编译器会报错printf("%d\n",&p[4][2] - &a[4][2]);很明显a[5][5]的内存分布如下:那p的内存分布呢?...原创 2020-03-06 21:02:19 · 1759 阅读 · 0 评论 -
【笔记】逻辑运算符||与&&的一点知识
代码如下:int i = 0;int j = 0;if((++i > 0) || (++j > 0)){ printf("%d,%d\n",i,j);}结果为i = 1; j = 0。跟预想的不太一样,然后根据书本作者的解释才明白:逻辑运算符只要有一个结果为真,那么结果就为真。而if((++i > 0) || (++j > 0))语句中,(++i &g...转载 2020-03-03 14:46:32 · 232 阅读 · 0 评论 -
【笔记】C语言的存储类型指示符
在看书时候,看到以下例子:#define INT32 inttypedef int int32;unsigned INT32 i; //OKunsigned int32 i; //errortypedef static int int32; //error然后不是很明白,就在DEVC++测试一下,看看报错是啥。结果为:[Error] conflicting specif...原创 2020-02-29 16:01:00 · 901 阅读 · 0 评论 -
【笔记】关于const和volatile
关于这方面的内容,我自己经验不够说得不够清楚。但又想记录下来,于是上网找了网友的提问。转自问题帖子:https://bbs.csdn.net/topics/1901460271.volatilevolatile标识一个变量意味着这个变量可能被非本程序的其他过程改变,例如某个访问这一变量的某中断程序。为变量加上这一标识可以禁止编译器的优化,使程序正确地按设计者的意图运行。例如下面的程序,我们将...转载 2020-02-26 17:23:11 · 122 阅读 · 0 评论 -
【笔记】关于signed关键字的一道题
在看C语言相关书籍时候,遇到一道题,想了好久原因才豁然开朗,记录下来方便以后观看,代码如下:int main(void){ char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1 - 1; } printf("%d\n",strlen(a)); return 0;}刚开始乍一看以为是1000,然后觉得不太对,...原创 2020-02-24 17:54:19 · 232 阅读 · 0 评论