C
城北programmer
*
展开
-
单链表逆置
单链表逆置 //带头结点的 void Reverse(List plist) { assert(plist!=NULL); List p,q,s; p = plist->next; q = NULL; plist->next = NULL; while (p != NULL) { s = p->next; p->next = q; q = p; p = s; } plist->next = q; } /* 利用头插实现单链表的原创 2021-03-09 13:32:45 · 238 阅读 · 0 评论 -
C语言extern关键字
extern的作用 一个c文件需要调用另一个c文件里的变量或者函数, 可以在变量或者函数前面加“extern”而不能从.h文件中调用变量 extern和include的区别 include相当于把include .h文件直接带入到本源文件里,比如在b.c文件里include “a.h”,就相当于把a.h文件里所有定义的变量和函数全部拷贝了一份放入了b.c里,一个项目里,一个.h文件可能会被多个.c源文件包含,这样编译的时候就会报重复定义的错误。而且尽量不要在.h里定义变量,这是一个不好的习惯。 头文原创 2021-04-21 22:14:27 · 122 阅读 · 0 评论 -
判断电脑大小端
#include<stdio.h> bool fun() { union { char a; short b; }u; u.b = 0x0001; return u.a = 0x01;//低地址端放小数据为小端 } int main() { if (fun()) { printf("电脑是小端"); } else { printf("电脑是大端");原创 2021-02-05 19:00:38 · 48 阅读 · 0 评论 -
顺序输出n的每一位数字
//顺序输出n的每一位数字.483->4 8 3 //Show(n):顺序输出n //Show(n/10):顺序输出n非个位 void Show(int n) { if(n < 10) { printf("%d ",n); } else { Show(n/10); printf("%d ",n%10); } } //逆序输出各位数字 //算法:得到个位n%10...原创 2020-03-25 17:34:31 · 639 阅读 · 0 评论 -
数字字符与数字转换
atoi 函数 将字符串转换成整型数,检测到非数字字符停止 //将字符串转成数字"123"->123,"12x3"-> int Myatoi(const char *str) { assert(str != NULL); if(str == NULL) return 0; //处理前面的空格 while(*str == ' ') str++; //处理符号 ...原创 2020-03-25 17:25:51 · 149 阅读 · 0 评论 -
不使用第三个变量,交换a,b的值
int a=10; int b=20; //1 a += b;//a=30,b=20 b = a-b;//a=30,b=10; a = a-b;//a=20,b=10 //2.异或 a ^= b; b ^= a; a ^= b; printf("%d,%d\n",a,b); 技巧性强的代码,BUG隐藏深,最好还是用tmp void Swap1(int *p...原创 2020-03-21 19:20:57 · 315 阅读 · 0 评论 -
指针基础
指针==地址 &a:获取a的地址 int *p;定义一个整型指针(地址)变量 p = &a; int *p = &a; 野指针,悬挂指针:你没有访问权限的地址 NULL:空指针,表示当前指针无效 指针算术运算: 指针+数字i:加i个单元格,注意不是字节 指针-数字i:减i个单元格,注意不是字节 指针+指针:错误 指针-指针:间隔的单元格,有正有负 指针关系运算: ==,!=...原创 2020-03-21 19:07:29 · 67 阅读 · 1 评论 -
字符串操作崩溃原因
1.内存不足(数组长度不够) char str1[]="abc"; char str2[]="xyz"; strcat(str1,str2); printf("%s\n",str1); 2.修改字符串常量的值 char *str1="abc";//字符串常量,不能修改 char *str2="xyz"; strcat(str1,str2); printf("%s\n",str1); 此外, 局...原创 2020-03-20 18:08:56 · 365 阅读 · 0 评论