![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言学习
懵逼是一种状态
坚持把学习点滴记录
展开
-
1、关于形参与实参的区别与理解
在弄清形参与实参的时候,遇到了这样一段代码,表示不能理解,网上找了一下,摘录了原文解释int a=1;int &b = a;这是C++的引用,引用只能在定义的时候被赋值,这个定义的意思就是给a取了一个别名叫b,所有对b的操作都是直接作用于a一个最简单的用法:比如我写了个变量,名字非常长int a_very_very_very_long_variable = 1;...原创 2019-03-09 17:53:13 · 6221 阅读 · 0 评论 -
13、int *p[i] 和int (*p)[i] 的区别
本来是解决我做题中的困惑的,结果发现与这一结论并没有关联,但都弄出来了就发布了吧int *p[i]是指针数组,首先p[i]是一个数组,然后*p[i]就是指向这个数组的指针。int (*p)[i]是数组指针,首先*p是一个指针,然后这个(*p)[i]数组中的元素都是指针类型的数据。需要明确一个优先级顺序:()>[]>*,所以:*p[i]:根据优先级,先看[],...转载 2019-03-29 22:15:58 · 3530 阅读 · 0 评论 -
11、为什么字符串可以直接赋值给字符指针变量?
今天看到了gets()与puts()函数,发现了一个奇怪的点:字符串可以直接赋值给字符指针变量。例如以下:char * p="EDS";puts(p); //输出结果为EDS学过指针让我清楚明白了指针变量是不能直接赋值的,而这里的字符指针却直接被赋值字符串。这让我深感疑惑了,经过查阅,才知道:char * p="EDS"; 双引号在这里做了这三件事情:1. 申请了空间(在...原创 2019-03-28 22:47:49 · 6526 阅读 · 3 评论 -
预处理命令-宏定义
宏定义的定义,以及习题中会出现的“坑”。原样替换是重点!!!!转载 2019-04-20 21:15:04 · 1182 阅读 · 0 评论 -
C语言中,%m.ns与%m.nf的区别
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。可以理解为m前为正,则字符串右对齐。%-ms:如果串长小于m,则在m列范围内,m前为负,字符串左对齐,右补空格。%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列...原创 2019-04-14 11:15:09 · 11264 阅读 · 2 评论 -
指针与数组习题
很有参考价值的一些题目单项选择若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是().A、p=a //p只能赋值以为数组,要想赋值正确,这里应该改为p=a[0];B、p=&a[2][1]C、q[i]=a[i]D、p=a[i]执行下列语句后的结果为().int x=3,y;in...原创 2019-04-21 22:11:46 · 3876 阅读 · 1 评论 -
输入n个数字,并求出它们中间的最大值与最小值
做题觉得简单,拿着编译器一编程就各种小毛病出来了,这样下去的进度就太慢了。既然是n个数,那么肯定就要有输入,定义一个数组a[5] 来接收从键盘输入的数字,怎么将接收的数值依次传入数组呢?利用for循环,将其依次存入a数组。输入完成,接下来就是要实现具体功能了 将问题模块化,把功能与主函数独立开来,建立一个新的函数,其功能为求函数的最大最小值。比如建立一个fun()函数,需要传参,传什么...原创 2019-04-26 22:16:35 · 12115 阅读 · 1 评论 -
C语言中遇到的数学概念名词及用法
首先得承认的是,这些都是小学数学的知识了,说来惭愧,现在在c语言里面接触这些数学知识点后,发现基本都忘记了。现在不得不重新温习一遍了。1.因数(约数)、因子、素数(质数)因数:又称为约数。定义:整数a除以整数b(b≠0) 的商正好是整数而没有余数,此时b就是a的因数。0不是0的因数。比如60,可以写成60=2*2*3*5,2、3、5分别为60的因数。因子:假如整数m除以n(n>...原创 2019-04-30 15:53:51 · 833 阅读 · 0 评论 -
12、关于*(p+i) [j] 和 (*(p+i))[j] 的区别
今天遇到了这样一道题目:若有一下定义: int w[2][3];则对w数组元素非法引用是: A、*(w[0]+2) B、*(w+1)[2] C、w[0][0] D、*(w[1]+2) E、w[1]+2题目不难,我一开始直接选了E,因为这是对w数组元素的非法引用,单单给个地址肯定是不对的,可是后面一听讲解才知道,E是正确的,但B选项的值越界了,这就...原创 2019-03-29 22:15:42 · 4643 阅读 · 5 评论 -
10、二维数组指针
阅读了《CPrimer Plus》中的指针和多维数组后,对二维指针数组有了一定的理解了,但是由于个人思维的原因,还是无法像学习一维数组指针一样轻松的看懂。假设有以下声明:int Zippo[4][2]; //内含int类型数组的数组,当一维数组来看Zippo[4][2]={{1,2},{3,4},{5,6},{7,8}}; //四行两列为了形象,我做了下面这一副图...原创 2019-03-21 19:05:00 · 512 阅读 · 0 评论 -
5、动态内存的分配(重难点)
传统数组的缺点:1.数组的长度必须事先制定,且只能是常数,不能是变量2.传统形式定义的数组,该数组的内存程序员无法手动释放,在一个函数运行期间,系统为该函数数组所分配的空间会一直存在,知道该函数运行结束,数组的空间才会被系统释放3.数组的长度一旦被定义就不能再更改,数组的长度不能在函数运行的过程中动态的扩充或者缩小4.A函数定义的数组,在A函数运行期间可以被其他函数使用,但A函数运...原创 2019-03-14 20:19:51 · 1075 阅读 · 0 评论 -
6、多级指针
之前还是不太理解,这次之后感觉还是有点收获了,先看下面一段代码:#include <stdio.h>int main(void){ int i=10; int * p=&i; int ** q=&p; int *** r=&q; printf("%d\n",***r); return 0;}下面是我对上面代码的理解,其实也只是我...原创 2019-03-15 10:11:07 · 356 阅读 · 0 评论 -
2、指针的初步接触
int * p;int i=3;p=&i; /* 1. p保存了i的地址,所以p指向i,相当于一个传送门,标记谁的地址就传送到哪,或者说, p相当于一个房间的门牌号,而通过p这个门牌号,能找到里面的人,也就是i; 2.p不是i,i也不是p,修改p的值不会影响i的值,修改i的值也不会影响p的值; 3.p是一个指针...原创 2019-03-11 11:10:51 · 99 阅读 · 0 评论 -
9、用指针处理链表问题(何为p=p->next;何为p->next=p?)
其实中间还有一个二维数组指针问题,不过,先放一放吧,把链表这块的问题先理一理。1.关于链表的几个概念点:一个单链表的头结点,头指针,(开始结点)首结点,(终端结点)尾结点,尾指针的描述。我觉得这个还是相当重要的一个点的,我开始学的时候就对这个有点迷糊,又是头结点,又是头指针的。但是理解了其中的含义后,对链表的理解又更进一步了,废话不多说首结点:第一个有效结点,也就是第一个存放有效数据的...原创 2019-03-20 10:02:55 · 16006 阅读 · 9 评论 -
7、结构体之结构体数组
结构体这块本来学着没有什么问题的,但是,有时候的学习不知道怎么的,可能是课程进度有点快,会让自己把前面的知识点与现学的联系起来,从而使自己迷惑起来。好了,先说问题:在前面的指针的学习中,我一直过于执着于——*p是以p的值为地址所指向的值,并且*p为一个具体的数值。以至于在学到结构体数组时,比如:pArr为一个结构体数组,pArr[0].age等价于(*pArr).age,我一时脑回路不够用了,困惑...原创 2019-03-16 10:38:24 · 1214 阅读 · 0 评论 -
8、学生管理系统(C语言知识的简单归纳编程)
利用下面的一段程序,做一个c语言的小归纳吧,基本把数组,循环,指针,指针数组,结构体,结构体指针变量都结合起来了。程序的功能点是通过键盘录入学生的个人信息:年龄,成绩和姓名,然后将其个人信息按照成绩的升序打印学生的个人信息。第一种:#include <stdio.h>#include <malloc.h>struct student{ int age;...原创 2019-03-16 11:30:58 · 272 阅读 · 0 评论 -
3、关于指针的概念知识与常见错误
1、指针指针的本质是一个操作受限的非负整数,不能进行加、乘、除运算,但是能够进行减法运算。形象的说,将指针比作门牌号,将门牌号进行加、乘、除运算,并没有实际意义,但进行减法运算是有实际意义的,能够算出中间隔了多少房间。2、基本指针类型常见的一些错误2.1int *p;int i=5;*p=i; //error,没有初始化指针变量p,没有确定指针变量p指向哪块区域就进行...原创 2019-03-11 22:04:02 · 266 阅读 · 0 评论 -
4、指针与数组
1.指针和一维数组一维数组名是一个指针常量,它存放的是一维数组第一个元素的地址,且它的值不能被改变。int a[5];int b[5];printf("%#x\n",&a[0]); //%#x表示以十六进制输出printf("%#x\n",a);=================编译输出结果一致,但实际输出的结果是垃圾值,因为数组元素没有初始化可以看出数组名...原创 2019-03-13 09:56:50 · 149 阅读 · 0 评论 -
C语言渔夫打鱼晒网问题
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。原创 2019-04-30 16:58:43 · 3243 阅读 · 4 评论