C语言
文章平均质量分 61
C语言
Jacques/CS
这个作者很懒,什么都没留下…
展开
-
C语言字符数组和字符指针辨析
在C/C++中,字符数组和字符指针,理论上和整型、浮点型的数组和指针很相似,但是由于字符串的存在,使字符数组和字符指针变得复杂,往往使初学者感到困惑。在C/C++程序中,存储一个字符串有两种方法,一是用字符数组实现,二是用字符指针变量实现。char s1[] = "Hello world";char *s2 = "Hello world";s1是数组名,代表数组存储的首地址。s2是一个字符型指针变量,其指向字符串的首地址。在C/C++中,字符串常量是按字符数组处理的,是在内存中开辟了一个字符数组原创 2020-06-25 17:12:33 · 249 阅读 · 0 评论 -
printf函数的求值顺序
下面的题目据说是一道华为的C语言面试题#include <stdio.h> int main(){ int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf("%d,%d",*ptr,*(++ptr)); return 0;}运行结果为:8,8这道题目考察的重点有两处:前++和后++的区别;*(ptr++) += 123; 等价于:*ptr += 123; ptr++;* (++pt原创 2020-06-24 23:51:52 · 992 阅读 · 0 评论 -
C语言*ptr++的解析
在 * ptr++ 中,由于“++”和 “ * ”都是单目运算符,为同一个优先级,结合方向都是自右而左,因此它等价于*(ptr++)。它的作用是先得到p指向的变量值(*ptr),然后再将ptr+1赋给ptr。 *(ptr++) 与 *(++ptr)作用不同。前者是先取 *ptr值,然后使ptr加1。后者是使ptr加1,再取 *ptr。#include <stdio.h> int main(){ int a[5] = {0, 1, 2, 3, 4}; int *ptr =原创 2020-06-22 22:16:25 · 4927 阅读 · 0 评论 -
C语言数组作为函数的参数
C语言的数组是一系列数据的集合,无法通过参数将它们一次性传递到函数内部,如果数组作为函数的参数,必须传递数组指针。void func(int *p, int n) //对数组进行冒泡排序{ int temp; for(i = 0; i < n-1; i++) { for(j = 0; j < n -i -1; j++) { if(p[j]>p[j+1]) { temp = p[j]; p[j] = p[j+1]; p[j+1] =原创 2020-06-20 17:50:16 · 7269 阅读 · 0 评论 -
C/C++数据类型转换
在C/C++中,整型、单精度、双精度及字符型数据可以进行混合运算,即双目运算符两边的操作数类型可以不同。当表达式中不同类型的数据进行运算时,会发生数据类型的转换。C/C++中有两种类型转换的方法:自动类型转换和强制类型转换。自动类型转换 所谓自动类型转换是指在不同类型数据进行混合运算时,系统会自动进行数据类型的转换。对同一表达式中不同类型的数据自动进行类型转换是由C/C++编译系统自动完成的,遵循一定的规则,即:在运算时,不同类型的数据要先转换成同一类型的数据,然后进行计算,所有操作数都是向“所占原创 2020-06-18 21:39:24 · 477 阅读 · 0 评论 -
sizeof运算符和strlen函数
sizeof 在有些计算机语言中,sizeof是函数,在C/C++语言中,sizeof是关键字,也是操作符,功能是求某一数据类型或某一变量在内存中所占空间的字节数。其使用的一般形式为:sizeof(变量名或数据类型)int main(){ int *pi; char *pc; double *pd; unsigned int a[10] = {1, 2, 3}; printf("%d\n", sizeof(int)); printf("%d\n", sizeof(char)); pri原创 2020-06-13 21:12:29 · 274 阅读 · 0 评论 -
补码简介及计算
补码是计算机语言中很基础也很重要的一个概念,计算机中的数值都是以补码的形式存储的,有了补码,可以变减法为加法,10=1+9=2+8=3+7=4+6=5+5;在十进制运算中,如果只看个位,那么,加1和减9的结果是一样的,加2和减8的结果也是一样的…...原创 2020-06-13 18:57:30 · 10159 阅读 · 3 评论