首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Initial programming

    初识C语言·2

    一个整型占4个字节,短整型占2个字节,长整型占8或者4个字节,更长的整型占8个字节。 有人就问了,欸long为什么是两种情况,这是因为C语言中规定占字节数long>=int,取决于多少位系统。 相信不少刚接触C语言的认为答案是1.5,那么结果是否如此呢? 当然,也可以进行连续赋值,如: int a = 1; int b = 2; int c = 0; c = b = a+3;//连续赋值,从右向左依次赋值 C语言支持这种写法,但是这种代码不易理解,所以建议拆开写 复合赋值符 写代码的时候我们经常会对一个数进行自增自减的操作,如下 int a = 0; int b = 0; a = a+3; b = b-2; C语言中提供了更加方便的写法 int a = 18; 三目操作符,即是有三个操作数的,在C语言中有且仅有一个三目操作符, 实现代码是 (exp1 ? exp2:exp3)exp是表达式的意思。

    78110编辑于 2024-10-16
  • 来自专栏编程学习

    C语言——指针(2)

    我们可以看到在main函数内部,创建了a和b,a的地址是0x009af998,b的地址是0x009af98c,在调用Swap函数时,将a和b传递给了Swap函数,在Swap函数内部创建了形参x和y接收a * pc = &c;//字符指针 printf("%c\n", *pc);//字符指针解引用 return 0; } 字符指针只有一种使用方式吗? 正确形式: #include<stdio.h> int main() { char* pc = "abcdef"; printf("%c\n", *pc); printf("%c\n", *(pc 我们一起来看看: C/C++会把常量字符串存储到单独的⼀个内存区域,我们知道常量字符串是不可以被修改的,既然不可以被修改,那么内容相同的常量字符串只需要保存一次就好了,当⼏个指针指向同⼀ ; int* pc = &c;*/ int* p[3] = { &a,&b,&c }; //下标 0 1 2 int i = 0; for (i = 0; i < 3; i

    1.5K10编辑于 2024-11-07
  • 指针2——C语言

    形参用字符指针变量接收arr,count作为计数器,记录字符个数,当记录到’\0'时,循环停止,返回count;  二,使用指针访问数组 1.1一维数组 int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 代码展示: int main() { int arr[10]={1,2,3,4,5,6,7,8,9,10}; int (*p)[10]=&arr; for(int i=0;i<10;i int a=10; int* p1=&a; int** p2=&p1; 对指针变量p2来说,它先于*结合,证明他是一个指针,再与int*结合,证明它所指向的对象是整形指针类型,是一个二级指针。 int* arr[10];//arr先于[10]结合,说明它是一个数组,再与int*结合,说明它的元素类型是int* 指针数组模拟二维数组  这里,arr1就是一维数组arr1首元素地址, 同理,arr2, int arr1[3]={1,2,3}; int arr2[3]={2,3,4}; int arr3[3]={3,4,5}; int *arr[3]={arr1,arr2,arr3};

    31410编辑于 2025-12-30
  • 来自专栏zxctscl个人专栏

    C语言指针(2)

    int arr[]={1,2,3,4,5}; 而所对应的下标为0,1,2,3,4。 printf("p1=%p\n", p1); printf("p1+1=%p\n", p1+1); printf("p2=%p\n", p2); printf("p2+1=%p\n", 2. 指针-指针 在指针变量相同类型时,计算出的是中间间隔的个数。 int ret = p1-p2 ; printf("%d\n", ret); return 0; } 结果为 指针类型不同时不能进行指针的加减运算。 2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。 除此之外,任何地方使用数组名,数组名都表示首元素的地址。

    42210编辑于 2024-01-22
  • 来自专栏C++破军之路

    C语言基础(2)

    数据类型;常量,变量 数据类型 c语言如何描述:常量——不能改变的量;                             变量——能被改变的量 定义变量的方法  #下表为定义整型变量的示范案例,最终执行结果为 #include<stdio.h> int main() { int age=20; age=age+2; printf("%d\n",age); return 0; } 打印时需注意:1 .打印整型——%d                           2.打印单精度浮点型(float)——%f                            3.打印双精度浮点型(double 2.全局变量的作用域的是整个工程。 生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。                 2.全局变量的生命周期是:整个程序的生命周期。

    43010编辑于 2024-06-04
  • 来自专栏coding

    C语言——指针(2)

    2.&数组名,这里的数组名表示整个数组,取出整个数组的地址。整个数组的地址和数组首元素地址是完全不一样的。 除去上面的特殊情况,其他地方使用数组名,都是首元素地址。 ,有关二级指针的运算,我们可以通过*p2,也就是对p2进行解引用找到p1,再对p1解引用找到n,从而对n进行修改。 四.指针数组 指针数组就是存放指针的数组。

    43110编辑于 2024-11-26
  • 来自专栏我的计算机成长

    初识C语言(2)

    while(line<=20000) { line++; printf("我要继续努力敲代码\n"); } if(line>20000) printf("好offer\n"); return 0; } 6C语言中如何实现循环呢 C语言中给了数组的定义:一组相同类型元素的集合 8.1数组定义 数组的作用就是存放一组相同类型的数,[]里面是数组的大小,10表示这个数组可以存放10个元素,arr是数组名,int是表示这个数组是整形数组 int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素 8.2数组的下标 C语言规定:数组的每个元素都有一个下标,下标是从0开始的。 在C语言中,0表示假,非0表示真。&和*我们讲指针时再讲。·~后期讲。 !就可以把真假互换。  sizeof可以计算类型大小。 感谢大家的阅读,下期我们将结束初识C语言,让我们下期再见。

    50010编辑于 2024-01-23
  • 来自专栏c语言

    c语言进阶(2)

    类型在c语言中为什么有这么多种?因为应用场景不同,解决应用场景应对方式不同,需要空间的大小也不同。 sizeof不仅可以求内置类型,还能够求自定义类型。 char c=0这样写是没有问题的,但是不便于用户理解。 那么,我们就理解了,对于多少位,应该是这样一个范围: 那么,就让我们根据一些练习题练习一下,看看是否掌握了吧 int i=-20,等于2的4次方+2的2次方,因为都是4个字节,所以都是32个比特位。 3次方+2的1次方     0000  0000  0000  0000   0000   0000  0000 1010 +  1111   1111   1111   1111   1111    所以c99当中的bool类型可移植性较好。 运行下面这个程序: 我们会发现输出结果是1 2 3。 第一种比较方法不推荐,因为我们会误认为是整数比较。第二种方法也不推荐,false只有C99支持。

    45210编辑于 2024-03-28
  • c语言练习-2

    今天来写一个c语言小程序 内容:比较两个实数的大小 代码演示 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int a , b, c; printf("请输入两个实数:\n"); scanf("%d%d", &a, &b); c = a > b ? a : b; printf(" the max of (%d,%d) is %d", a, b, c); return 0; } 这是一个小练习,新手可以自己动手练习一下

    13010编辑于 2025-12-22
  • 来自专栏编程学习

    C语言——函数(2)

    接下来,我们用一个简单的例子来进行更好的理解 例:找四个数的最小值 #include<stdio.h> int max4(int a, int b, int c, int d) { int max2( int m, int n);//函数声明 int max = a;//最大值最开始假设为a max = max2(max, b);//把a,b的较大者赋给max max = max2(max, c m : n;//条件表达式 } int main() { int a = 0, b = 0, c = 0, d = 0; printf("请输入四个整数:"); scanf("%d %d %d % d", &a, &b, &c, &d); int ret = max4(a, b, c, d); printf("最大值为%d\n", ret); return 0; } 我们可以看到,在main 局部变量和全局变量在前面 C语言基础 中讲过,这里就不再进行更多的描述,可以简单理解为局部变量是在{ }内部定义的变量,而全局变量是在{ }外部定义的变量。

    47010编辑于 2024-11-07
  • 来自专栏C++

    C语言(指针)2

    既然指针变量的大小与类型没有关系,那为什么还要有不同的指针类型呢?

    40010编辑于 2024-10-16
  • 来自专栏C++初阶高阶

    C语言初阶———指针(2)

    虽然a是不能被修改的,但是本质上还是变量,也称为常变量 //a = 20;a会报错 int arr[a];//在C++中没有报错,const修饰的变量就是常量,在C语言中会报错 printf(" 2.assert断言 assert.h头文件定义了宏assert(),用于在运行时确保程序符合指定条件,,如果不符合,就报错终止运行,这个宏被称为“断言”。 assert(p ! //写一个函数,交换两个整数的内容 #include<stdio.h> void swap2(int *pa, int*pb) { int tmp = 0; tmp = *pa; //tmp=a /b=tmp } int main(void) { int a = 10; int b = 20; printf("交换前:a=%d b=%d\n", a, b); //10 20 swap2(

    31010编辑于 2025-10-22
  • 来自专栏计算机二级C语言

    C语言入门笔记2

    先说一下C语言中的运算是什么?C语言中的运算就是对数据进行操作、处理的过程。那么运算符又干什么的呢?运算符就是指定该运算的处理方式。 那么C语言中又有哪些运算符呢? 如下所示: ※ 算术运算符 ※ 赋值运算符 ※ 关系运算符 ※ 逻辑运算符 ※ 三目运算符 2、算术运算符 C语言基本算术运算符如下表: ? 那么C语言中的赋值运算符又是什么呢? 那么上面所说的能不能在C语言中表示出来呢?当然是可以了,不过C语言中,需要用到一个符号,这个符号就是三目运算符。 C语言中的三目运算符:“?:”,其格式为: 表达式1 ? 解析:C语言中运算符中最高等级的为(),因此执行过程为: 1、先计算a>3和a+3的结果,计算后算式为1*a-14%3; 2、再计算1*a和14%3的结果,计算后算式为11-2; 3、最后算出结果为9。

    1.6K10发布于 2020-03-19
  • 来自专栏我命由我不由天

    C语言 模2除法

    C语言中的模2除法: 模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。 步骤如下: a、用除数对被除数最高n位做模2减,没有借位。 (模2减规则:0-0=0 0-1=1 1-0=1 1-1=0) b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。 c、一直做到余数的位数小于除数时,该余数就是最终余数。 1011 ———— 01000 1011 ———— 00110 2.

    2.8K10发布于 2019-09-11
  • 来自专栏修也的进阶日记

    【C语言】错题本(2)

    define MAX_SIZE A+B struct _Record_Struct { unsigned char Env_Alarm_ID : 4; unsigned char Para1 : 2; )malloc(sizeof(struct _Record_Struct) * MAX_SIZE); 错误选型:B 正确选择:D 题目分析: 也即最后malloc(     ),括号中的表达式为(3*2+ malloc(sizeof(struct _Record_Struct) * MAX_SIZE); //宏替换后: malloc(sizeof(struct _Record_Struct) * 2 + 3 ); //而不是: malloc(sizeof(struct _Record_Struct) * (2 + 3) );

    22510编辑于 2024-04-01
  • C语言分支语句(2)

    2. 关系操作符 在C语言中,用于比较的表达式,叫做 “关系表达式” ,里面使用的运算符就称为 “关系运算符”。 我们所想要表达的,是变量 j 的值在变量 i 和 k 的值之间,但是C语言不会认为是这样。 练习:阅读代码,计算代码输出的结果 // 代码1 #include <stdio.h> int main() { int i = 0, a = 0, b = 2, c = 3, d = 4; } // 代码2 int main() { int i = 0, a = 1, b = 2, c = 3, d = 4; i = a++ || ++b || d++; printf 表达式2 : 表达式3 如果表达式1的值为真,执行表达式2语句;否则执行表达式3语句。计算结果就是整个表达式 的值。

    34710编辑于 2025-12-16
  • 来自专栏学习成长指南

    C语言-------指针进阶(2)

    字符数组,整型数组里面的元素都是整型变量,字符数组里面 的元素是字符类型,那么指针数组就是数组里面的每个元素都是指针类型,例如int*arr[5]就是一个 指针数组,数组里面的元素都是int*的指针类型; 2. ,函数名同样表示函数的地址,取地址数组名表示整个 数组的地址,但是取地址函数名仍然是函数的地址,和直接的函数名没有区别 图片里面int (*p)(int,int)就是定义函数指针,这个函数指针的参数有2个 ,都是int类型 这个函数的返回类型是int类型,实际上在进行调用的时候,加上星号只是为了表示他是函数指针 加上2个或者多个星号都不影响使用,不加星号都是可以的,通过打印结果也可以知道, 看似,即使没有函数指针 这里的星号同上,是可以省略的,调用0地址处的这个函数,(这里面的0仅仅是一 个地址)这个函数指针没有参数,传递的参数也是空的,如果要调用100地址处的函数,就是 100,总言之,这是一次函数的调用; 2. [5]=&arr(这里的p2就是指针变量)就可以写为ptr p2=&arr, 函数指针类型重命名,原来的 void (*pf)(int)函数指针,typedef  void(*)(int)  ptr;以后定义就可以

    34200编辑于 2025-02-24
  • 来自专栏C语言入门到精通

    C语言 | 基础总结 (2)

    最 好的安排是在某个相关的 .c 文件中定义, 然后在头文件 (.h) 中进行外部声明, 在需 要使用的时候, 只要包含对应的头文件即可。 定义变量的 .c 文件也应该包含该头 文件, 以便编译器检查定义和声明的一致性。这条规则提供了高度的可移植性: 它和 ANSI C 标准一致, 同时也兼容大多 数 ANSI 前的编译器和连接器。 Unix 编译器和连接器通常使用 “通用模式” 允许 多重定义, 只要保证最多对一处进行初始化就可以了; ANSI C 标准称这种行为为 “公共扩展”, 没有语带双关的意思。 特 别是, 永远不要把外部函数的原型放到 .c 文件中: 通常它与定义的一致性不能得 到检查, 而矛盾的原型比不用还糟糕。 有时候,正是那些意想不到之人,成就了无人能成之事。 ——图灵

    9013229发布于 2020-11-03
  • 来自专栏学习成长指南

    C语言深度剖析(2)

    ; 3.条件语句 在C语言里面,我们可以把我们想要注释掉的语句放到if(0)里面,这样同样可以实现语句的注释的功能,因为在C语言里面1是真的,0是假的,如果是if(0),这样就不会执行大括号里面的语句; 但是我们不建议这样做,我们仅仅需要看懂别人的这种写法; 4.布尔类型 true表示真值,false表示假的,在我们的书里面,大部分使用的是C89,C90的版本,所以并没有提及到,实际上在C99标准里面, ,有的平台可以正常运行,有的平台就不支持,因此,我们并不推荐微软的这套写法;其实布尔类型的本质和我们的C语言里面的0表示假,1表示真是一样的效果; 这个类型的使用需要包含我们的头文件stdbool.h; C语言里面的返回值可以不带类型,默认的是int类型,但是我们还是要写的,防止阅读我们的代码的人理解错误:是忘记返回值的类型,还是使用的默认的返回值的类型,为了避免这样的模棱两可的情况,我们应当写上返回值的类型 这个函数不需要进行传参; (5)void*可以用来定义变量,void*是指针,指针的大小是明确的,就是4/8个字节;void*可以被任何类型的指针接受,也可以接受任何类型的指针(通用接口,例如我们常见的内存函数),但是在C语言里面

    40700编辑于 2025-02-24
  • 来自专栏学习

    C语言---深入指针(2)

    int arr[]) { int sz2 = sizeof(arr) / sizeof(arr[0]); printf("sz2=%d", sz2); } int main() { //假设是9 8 7 6 5 4 3 2 1 0, //而9和相邻的数换位置要换9次,换完位置就是这样的 //8 7 6 5 4 3 2 1 0 9 //9已经换好了,可以不用动了 在C语言中,int*arr[5] 声明了一个包含5个元素的数组,每个元素都是一个指向int类型数据的指针。这个数组可以存储指向整数的指针,可以是指向整数变量的指针,也可以是指向整数数组的指针。 int*arr[5] 还可以用于指向整数数组的指针,例如: int array1[3] = {1, 2, 3}; int array2[3] = {4, 5, 6}; int* arr[2] = { array1, array2 }; 在这个例子中,arr数组的元素arr[0]和arr[1]分别指向array1和array2这两个整数数组的首地址。

    47110编辑于 2024-09-23
领券