C
文章平均质量分 55
Ryanw丶
.
展开
-
彻底弄懂二维数组与指针
#include <stdio.h>int main(){ int a[2][3]; /* * &a * int (*)[2][3] * 数组的地址 */ int (*p1)[2][3] = &a; printf("%p\t%p\n", p1, p1+1); /* * a * int (*)[3] * 数组第0行的地址 (a = &a[0]) */ int (*p2)[3] = a; printf("%p\t%p\n", p原创 2021-10-07 22:55:53 · 329 阅读 · 1 评论 -
指针常量与常量指针的小问题
问题阅读以下代码,是否能正常运行?如果能,正常运行输出什么?如果不能,哪里有错误?#include <stdio.h>int main(int argc, char const *argv[]){ char *ptr1 = "hello"; char str1[10] = "world"; *ptr1 = 'w';// 错误 ptr1 = str1;// 正确,可以修改常量指针的指向 *str1 = 'w';// 正确,可以修改指针常量的指向内容 str1 = pt原创 2021-10-07 19:51:58 · 233 阅读 · 1 评论 -
共用体结构体字节对齐问题
#include <iostream>using namespace std;union A { // 共用体变量共用内存, 以最长的类型为准 int a[5]; char b; double c;};struct B{ char a; // 偏移为0,占用1个字节 double b; // 偏移为1,字节补齐加7个字节, 占用8个字节 int c; // 偏移为16,占用4个字节 };union C{ long i; // 32位机器下long类型为4个字节原创 2020-09-29 23:15:48 · 909 阅读 · 0 评论 -
冒泡法排序初探
冒泡排序思路:让数组中的元素像水中的气泡一样上浮,进而达到排序的目的。重复以下步骤,直到数组中不包含顺序相反的相邻元素从数组末尾开始依次比较相邻两个元素,如果大小关系相反则交换位置复杂度分析时间复杂度:O(n2)空间复杂度:O(1)冒泡排序进交换数组中的相邻元素进行比较和交换,因此不会改变元素的相对位置,是一种稳定的排序算法。冒泡排序中的交换次数称为反序数或逆序数,用于体现数列的错乱程度。#include <iostream>using namespace std原创 2020-09-28 17:22:57 · 113 阅读 · 0 评论 -
插入排序初探
插入排序思路:打扑克牌时排列手牌的方法相似。将牌从左到右,从大到小排序。我们需要将牌抽出来插入到已经排好序的手牌中的合适位置,重复插入过程完成排序。核心思想:向有序序列中插入元素。将首元素视为已排序序列执行下列过程直至未排序部分消失取出未排序部分的首元素赋给tmp在已排序部分,将所有比tmp大的元素向后移动一个单位将tmp插入到合适的空位复杂度分析时间复杂度:O(n2)空间复杂度:O(1)在插入排序中,我们将比tmp大的元素向后移动,不相邻的元素不会交换相对位置,因此插入排原创 2020-09-28 16:40:56 · 173 阅读 · 0 评论 -
scanf探究
scanf()是C语言中的一个输入函数。与printf()函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。函数原型int scanf(const char * restrict format,…);函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读...原创 2019-05-23 11:42:47 · 637 阅读 · 0 评论 -
错题记录
1.字符串C语言char *p1 = ”123”, *p2 = ”ABC”, str[50] = “xyz”;strcpy(str + 2, strcat(p1, p2));printf(“%s\n”, str);A.xyz123ABCB.z123ABCC.xy123ABCD.出错正确答案Dp1、p2都是常量指针,虽然在C语言char *p1 = "123"没有强调标识,在...原创 2019-05-21 00:00:04 · 366 阅读 · 0 评论 -
Puzzle UVA - 227 二维几何
对迷宫的移动进行模拟。需要注意的是数据流的输入残存问题和输出格式问题。输出案例之间隔一个空行,可以使用第一个输出后没有空行,之后的每个输出前都输出空行。这样就保证所有输出之间的空行弃用fflush和gets函数,gets函数无限制的读取,stream指向stdin,fflush函数的行为不确定,而且fflush函数可移植性不好使用自定义flush缓存处理函数。#include <...原创 2019-08-04 17:35:46 · 197 阅读 · 0 评论 -
C Traps and Pitfalls学习摘要
《C陷阱与缺陷》是人民邮电出版社2008年出版的书籍,作者是(美)凯尼格。本书主要内容是从多个方面分析了C编程中可能遇到的问题。词法分析中的“贪心法”C语言的某些符号,例如/、*\和=,只有一个字符长,称为单字符符号。而C语言中的其他符号,例如/*和==,以及标识符,包括了多个字符,称为多字符符号。C语言对读入字符做出了一个很简单的规则,贪心读取。将程序分解成符号的方法:从左到右一个一个字符地...原创 2019-03-06 22:11:54 · 271 阅读 · 0 评论 -
数组初始化总结
整型数组初始化数组为0:1.静态变量和全局变量初始化时会自动设为0。#include&amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;int array[100];int main(){}或者int main(){ static int array[100];}2.对于局部数组我们还有简写的初始化语法。如果一个数组被部分初始化,没有被初始化的元素会被自动设置为相应类型的0。原创 2018-12-20 15:10:44 · 785 阅读 · 0 评论 -
sizeof
sizeof是关键字不是函数在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。语法sizeof有两种形式:sizeof(类型)----------sizeof(int)sizeof(对象)----------sizeof i----------...原创 2019-01-03 20:58:52 · 159 阅读 · 0 评论 -
二进制相关问题
int main(){ char a[1000]; int i; for(i=0;i&amp;lt;1000;i++) a[i]=-1-i; printf(&quot;%d&quot;,strlen(a)); return 0;}计算机系统中,数值一律是用补码来表示(存储)的,主要原因是补码可以将符号位和其他位统一处理。正数的补码与其原码一致;负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,...原创 2019-01-05 16:35:09 · 833 阅读 · 0 评论 -
C语言详解
1.常变量与符号常量有什么不同?#define PI 3.1415926 //定义符号常量const float pi=3.1415926 //定义常变量符号常量PI和常变量pi都代表3.1415926,在程序中都能使用,但二者性质不同:定义符号常量用#define指令,它是预编译指令,它只是用符号常量代表一串字符串,在预编译时进行字符替换,在预编译后,符号常量就不存在了(全部被替...原创 2019-01-08 19:30:25 · 363 阅读 · 0 评论 -
rand函数
在头文件stdlib.h中的rand函数rand函数不是真正的随机数生成器,而是srand会设置供rand使用的随机数种子。如果在第一次调用rand之前没有调用srand,那么系统会自动为你调用srand。而使用同种子相同的数调用rand会导致相同的随机数序列被生成。srand((unsigned)time(NULL))则使用系统定时/计数器的值作为随机种子。每个种子对应一组根据算法预先生成...原创 2019-01-14 19:27:43 · 1312 阅读 · 0 评论 -
C语言程序书写规范
1.符号命名规则标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成。并且首字符不能是数字,但可以是字母或者下划线。不能把C语言关键字作为用户标识符标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。标识符命...原创 2019-01-16 10:11:11 · 12082 阅读 · 0 评论 -
const的使用
常变量与符号常量有什么不同? #define PI 3.1415926 //定义符号常量 const float pi=3.1415926 //定义常变量符号常量PI和常变量pi都代表3.1415926,在程序中都能使用,但二者性质不同:定义符号常量用#define指令,它是预编译指令,它只是用符号常量代表一串字符串,在预编译时进行字符替换,在预编译后,符号常量就不存在了(全...原创 2019-02-10 16:59:07 · 193 阅读 · 0 评论 -
数据结构题目练习
顺序表的就地逆置编写一个函数,实现顺序表的就地逆置,也就是说利用原表的存储空间将顺序表(a1,a2…an),逆置为(an,an-1…a1)#define MAXSIE 100//静态顺序表的最大空间#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;using namespace s原创 2019-03-04 22:02:21 · 3785 阅读 · 2 评论