1.函数的概念 在数学中,有函数这个概念,在C语言中也有这个概念。叫做function。 准确的来说,C语言中的函数二字就是由数学函数这个概念翻译而来的,C语言中的function更准确的翻译是子程序。但是由于它和数学中的函数用法相似,所以将它称为函数会更好理解。 那么为什么C语言中会有函数呢?因为C语言作为一种语言,它只提供一种语法规则,本身并不能执行程序。 我们可以用数学来类比C语言中的函数概念。注意,接下来所说的函数都是指C语言中的函数。 2.函数是什么? C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。你可以将它理解为一个动作,一个执行活动。 5.函数的格式 其实库函数和自定义函数的格式都是一样的,只是一个无需自己再规定,一个需要自己先自定义。 格式: : ret_type:返回类型。
题目一: #include <stdio.h> int main() { int a[5] = { 1, 2, 3, 4, 5 }; int *ptr = (int *)(&a + 1); // &a取出的是整个数组类型是int(*)[5],&a+1类型也是int(*)[5],所以要强制类型转换为int(*) printf( "%d,%d", *(a + 1), *(ptr - 1)); return return 0; } 运行结果: 10 5 6. 题目七 int main() { const char* c[] = { "ENTER","NEW","POINT","FIRST" }; const char** cp[] = { c + 3, c + 2,c + 1,c }; const char*** cpp = cp; printf("%s\n", **++cpp); //POINT printf("%s\n", *-- * ++
C/C++会把常量字符串存储到单独的一个内存区域,当几个指针指向同一个字符串的时候,它们实际会指向同一块内存。
< sz;i++) { printf("%d ", *(P_arr + i)); } } //排整型的数组 int test1() { int arr1[10] = { 1,4,3,2,6,5,8,7,9,10 ; for(i=0;i<sz;i++) { printf("%d ",arr[i]); } printf("\n"); } void test() { int arr[10]={1,3,5,7,9,2,4,6,8,0 j * width, (char*)base + (j + 1) * width,width); } } } } void test2() { int arr[10] = { 1,3,5,7,9,2,4,6,8,0
1 sizeof和strlen的对比 在指针进行运算的时候,sizeof和strlen挺绕的,今天我们就重温一下这两个 sizeof是C语言的关键字,被用来计算某个数据在内存中占的空间大小,不会关心存放的是什么数据 strlen是C语言中的库函数,使用的时候需要引用头文件string,是用来计算字符串长度的,计算的时候是通过找到'\0'来返回值的,如果后面有其他字符,strlen也是不会继续计算的,如果没有'\0' 那么arr + 1 指向的是第二个元素,然后解引用得到2,pa - 1指向的是5最后的一块空间,运算之后解引用得到的就是5。 题目6: int main() { char* c[] = { "ENTER","NEW","POINT","FIRST" }; char** cp[] = { c + 3,c + 2,c + 1, cpp[-1][-1] + 1,上次的cpp是没有自增的,所以解引用之后指向的是c + 1位置,那么cpp[-1]就是c + 2,c + 2指向的是P,P的地址 - 1,也就指向了NEW中N的位置,+1
sharetype=blogdetail&sharerId=147064833&sharerefer=PC&sharesource=asciiletters&sharefrom=from_link 本文承接C语言初阶 calc(Sub); break; case 3: calc(Mul); break; case 4: calc(Div); break; case 5: 0; i < sz; i++) { printf("%d", i); } printf("\n"); } int main(void) { int arr[10] = { 9,8,7,6,5,4,3,2,1,0 < sz; i++) { printf("%d", arr[i]); } printf("\n"); } void test1() { int arr[10] = { 3,2,4,7,8,5,0,6,9,1 j * width, (char*)base + (j + 1) * width, width); } } } } void test3() { int arr[] = { 3,2,4,5,8,9,6,7,1,0
这一节中,我们来详细讨论一下C语言里面的整数数据类型。 在C语言中,有上面表中列出的几种整型数据类型。 看到这里你可能想问,一个整数而已,为什么会需要定义这么多不同的类型出来呢? 用sizeof关键词来测量大小 和int一样,sizeof是C语言中的一个关键词。它是英文size of连起来的合成词。翻译成中文就是什么东西的大小的意思。 它能够测量C语言各种实体所占用的字节大小。 如果我们想看int所占用的字节大小c语言设计计算器,可以这样写sizeof(int)。执行后这段代码后,它的测量结果是一个整型。 这并未违反C语言标准,C语言标准规定高级别的类型取值范围不得小于低级别的类型,但是它们可以是一致的。 下面我们继续讨论一下,各种类型它们所能表达的数值范围具体是多少。 3. 不理解整型表达范围的原理不影响对C语言的使用。 char,short,int,long,long long分别占用了1,2,4,4,8个字节。
五道选择题: 1、下面代码的结果是:( ) #include <stdio.h> int main() { int a, b, c; a = 5;//1 c = ++a;//2 b = ++c, z=++x,是先令x++再让z=x #include <stdio.h> int main() { int a, b, c; a = 5;//1 c = ++a;//2 b = ++c, c 代码1令a=5,代码2令a先++使a=6,再让c=a,使c=6。 B 2、如下程序的运行结果是( ) char c[5]={'a', 'b', '\0', 'c', '\0'}; printf("%s", c); A、'a' 'b' B、ab\0c\ 以下逗号表达式的值为( ) (x = 4 * 5, x * 5,x+5); A、25 B、20 C、100 D、45 解析:易错题,逗号表达式从左往右计算,先算x
例14:C语言实现输出4*5的矩阵。 解题思路:可以用循环的嵌套来处理此问题,用外循环来输出一行数据,用内循环来输出一列数据。要注意设法输出矩阵的格式,即每输出完5个数据后换行。 源代码演示: #include<stdio.h>//头文件 int main()//主函数 { int i,j;//定义变量 int temp=0; for(i=1;i<5;i++)/ /for循环嵌套,外层循环做行 { for(j=1;j<6;j++,temp++)//for循环嵌套,外层循环做列 { if(temp%5==0)//每5个数进行一下 printf("%d\t",i*j);//输出数 } } return 0;//函数返回值为0 } 编译运行结果如下: 1 2 3 4 5 C语言输出4*5的矩阵 更多案例可以go微信公众号:C语言入门到精通,作者:闫小林
strlen是c语言里面的库函数,是函数 作用的求字符串长度的,只能针对字符串 strlen统计的是字符串\0之前的字符个数 只能指针字符串,求字符串长度 不能求整形数组的 strlen直到遇到\0,不然是不会停下来的 5 //int a[3][2] = { 1,3,5 }; //那么这个二维数组剩下的位置就被0给填充了 //1 3 //5 0 //0 0 #include <stdio.h> int main() { int a[5][5];//5行5列 //每一行的数组名分别是a[0]、a[1]、a[2]、a[3]、a[4] + 3,c + 2,c + 1,c }; //c是上面的指针数组的数组名,指向的就是首元素的地址,指向的就是第一个字符串 //c指向的就是"ENTER" //c+1指向的就是"NEW c+1了 // 那么现在已经得到了c+1的地址了 // 现在进行解引用通过地址找到c+1, // // 原本放的是c+1,现在--就变成c了,就没有c+2了,--就是自减
1.习题一 #include <stdio.h> int main() { char a= -1; signed char b=-1; unsigned char c=-1; printf("a =%d,b=%d,c=%d",a,b,c); return 0; } 结果为 -1 -1 255 (1)a:char(有符号) 源码 : 10000000000000000000000000000001
基本数据类型 C 语言的每一种数据,都是有类型(type)的,编译器必须知道数据的类型,才能操作数据。
1 2 3 4 5 6 7 8 9 // 声明一个int指针 int *ptr; // 声明一个int值 int val = 1; // 为指针分配一个int值的引用 ptr = &val; // 对指针进行取值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int *uninit; // int指针未初始化 int *nullptr = 1 2 3 iptr=0x7fff94b89c6c, vptr=0x7fff94b89c6c *castptr=1 uninit=0x7fff94b89d50, nullptr=(nil) 第1行我们声明了一个未初始化 虽然C语言并不要求显示地转换,但这样会增加代码的可读性。接着我们对castptr指针取值,值为1。 第19行非常有意思,在这里打印未初始化指针和NULL指针。 指针和数组 C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象。与之相反,指针用来存储单个内存地址。数组和指针不是同一种结构因此不可以互相转换。
在数据库管理系统提供的数据语言中,负责数据模式定义的是数据定义语言。 在E-R图中,用矩形表示实体集,用椭圆表示属性,用菱形表示联系。 数据库系统中支持安全性定义和检查的语言是数据控制语言。 分布式计算机系统指的是由多态分散的计算机经网络连接而成,且可协作完成同一任务的系统。
3.常量表达式:就是一个确定的数字,例如,1,5,8,10。这些都是确定的数字。 例如 我们定义int counts[9];数组大小为9,那么空间的相对位置就是0、1、2、3、4、5、6、7、8;那么使用第一个位置的方法就是 counts[0]、使用第二个位置的方法就是 counts int counts[5] = {1,2,3,4,5}; 这里需要注意的是:你申请的空间是连续的,那么赋值时也是按照相对位置顺序进行放置,用逗号来隔开,用花括号括起来,最后用分号结尾就可以了。 = {1,2,3,4,5}; 如果我们没有指定数组长度,计算机会根据后面花括号中数据的个数自动设置数组长度。 所以这里数组counts的长度为5. 4.举个例子 申请一个大小为10的int型数组,名字为counts,10个位置分别赋值1、2、3、4、5、6、7、8、9、10;然后依次输出。
题目描述 使用C语言输出一个年份,判断这个年份是否为闰年。 解题思路 判断闰年的方法: 四年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 本期博客我仍将为大家带来C语言中指针的相关内容,依旧是干货满满哦~让我们正式开始吧! 在C语言基础的第十三期中,在博主写的计算机的实现的相关代码中,红色框中的代码是重复出现的,其中虽然执行计算的逻辑是区别的,但是输入输出的操作是冗余的,那么有没有办法能够简化一些呢? } } while (input); return 0; } 二、qsort使用举例 2.1 使用qsort函数排序整型数据 qsort(即quick sort)是C语言中提供的一个排序函数 我们可以查看C语言的技术文档,得到qsort函数的原型如下: void qsort(void* base, //是指针,指向被排序数组的第一个元素 size_t num, const void * p2) { return (*( int *)p1 - *(int *) p2); } int main() { int arr[] = { 1, 3, 5,
{ for(j=1;j<5;j++) { for(k=1;k<5;k++) { if(i! 40 万元 < 利润 ≤ 60 万元: 奖金=10×10%+10×7.5%+20×5%+(I−40)×3%60 万元 < 利润 ≤ 100 万元: 奖金=10×10%+10×7.5%+20×5%+20 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。思路: 首先我们可以判断一下是不是润年。 (&a, &b); } if (a > c) { swap(&a, &c); } if (b > c) { swap(&b, &c); } printf("small to big : %d %d %d\n", a, b, c); return 0;}
注意,C语言中的等号表示赋值,作用是把一个常量赋值给一个变量,这样变量就获得了一个临时的固定值。 为什么说是临时的呢?因为在把另一个常量2赋值给a的时候,a的值就变为了2,不再1了。
1.3 代码 1/** 2 * @ClassName : One 3 * @Author : cunyu1943 4 * @Date : 2020/6/18 11:17 5 * @Version 14 System.out.println("组成的数:"); 15 // 设置三重循环,对每位上的数进行赋值 16 for (int i = 1; i < 5; i++) { 17 for (int j = 1; j < 5; j++) { 18 for (int k = 1; k < 5; k++) { 19 ; 80 } 81} 4.4 结果 1分别输入年月日,输入一个值则回车一次 22020 36 418 5输入的日期是该年的第 170 天! 5. 实例 5 5.1 题目 输入三个整数x,y,z,请把这三个数由小到大输出。