c语言
张东东
这个作者很懒,什么都没留下…
展开
-
int型溢出错误
int 型最大十位数int m=1;int n=1345;for(m=1;m<=1000000000;m*=10){int d=n/m%10;printf("%d\n",d);}会报错溢出,因为m最大为, 再执行1000000000*10就溢出原创 2021-06-28 10:31:30 · 447 阅读 · 0 评论 -
路上的错误
void print(struct NodeheadNode){struct Node pMove =headNode->next;while (pMove != NULL){printf("%d ", pMove->data);pMove++;}}pMove++为结构体指针执行+1操作 不是指pMove指向了pMove的下一个地址;会报错 读取访问权限冲突问题 指针越界了修改pMove=pMove->next;...原创 2021-06-20 17:41:43 · 130 阅读 · 0 评论 -
自寻验证的小知识
int main(){int a[] = { 1,2,3 };int i = 0;printf("%d\n", a[1]++);//printf("%d\n", a[2]);for (i = 0; i < 3; i++)printf("%d ", a[i]);return 0;} 输出结果为 21 3 3对于a【1】++表达式 先a[1]的值去操作 ,之后再a[1]++a[1]++是指对a[1]中的值+1,不是a[1]到a[2]的变化...原创 2021-06-02 15:03:08 · 77 阅读 · 0 评论 -
易错题更新总结
(1)#include <stdio.h>int main(){ int arr[]={1,2,3,4,5}; int i=0; short* p=(short*)arr; // 把地址arr[0]强制转化成short*型 for(i=0;i<4;i++) { *(p+1)=0; } for(i=0;i<5;i++) printf("%d ",arr[i]); return 0; } 输出结果0 0 3原创 2021-06-01 23:40:46 · 51 阅读 · 0 评论 -
小知识刷新总结
(1)int main(){int i = 0;for (i = 0; i < 2; i++){int j = 0;for (j = 0; j < 2; j++)i++;}printf("%d\n", j);return 0;}代码结论j未定义,说明在一个函数内复合语句中定义的变量只在复合语句内部使用,不能在复合语句外函数内使用(复合语句指函数中的成对括号构成的代码)...原创 2021-06-01 19:06:06 · 70 阅读 · 0 评论 -
传值和传址的区别
(1)函数可以传值调用,此时形参是实参的临时拷贝,即调用 函数中的形参的改变不会影响main函数中实参的值(2)函数可以传址调用,此时可以通过形参改变实参函数不可以嵌套定义,可以嵌套调用(3)函数调用exe((v1,v2),(v3,v4),v5,v6)中的实参是4个(v1,v2)逗号表达式 值是v2...原创 2021-06-01 19:01:45 · 711 阅读 · 0 评论 -
++相关知识
int a[10]={0};int* p=a; //p指针保存a[0]的地址p++=10; //虽然++优先级高,但是后加加,所以这句话指p=10,即a[0]=10;之后p++ 指向a[1]原创 2021-06-01 16:50:01 · 55 阅读 · 0 评论 -
break的相关知识
break,continue的相关知识(1)只能在循环体内和switch语句体内使用break,注意在循环体内即可,比如循环体内的if语句中也可用break,其实通常break语句与if语句联用,用于满足某种条件直接退出循环体;break是强制退出循环体,不执行剩余语句(2)在多层循环中,一个break语句只向外跳一层。(3)当break出现在循环体中的switch语句体内时,作用只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中原创 2021-06-01 13:23:03 · 2856 阅读 · 1 评论