C/C++语言
C语言和C++的知识的归纳
C~Tian
CTian
展开
-
C语言练习(7)——static关键字在函数中作用及它所修饰的变量在STM32中储存的位置
static关键字,在我们平常写代码的时候经常用到,特别是在做一些嵌入式编程时时常用到。static关键字修饰的对象:1、变量,2、函数static关键字的作用:1、在函数体修饰变量时,一个被声明为的static静态变量在这一函数被调用过程中维持其值不变。在下一次调用时,这个值还是维持上次调用结束时的值。2、在模块内(但在函数体外)修饰变量时,一个被声明为的static静态变量可以被模块内所用函数访问,但不能被模块外其它函数访问。准确地说static关键字在模块内的作用域是从定义之处开始,到文件结原创 2020-10-10 16:51:22 · 755 阅读 · 0 评论 -
C语言练习(6)——在不引用其他变量时交换两个值
上次有一个非常牛掰的师兄考我一个问题:如何在不引用其他变量的情况下,去交换两个值?刚开始我有点蒙圈:一般我的做法是引入一个变量,直接交换即可:#include <stdio.h>int main(){ int i=4,j=7; int x; //引用变量X x=i; i=j; j=x; printf(" i=%d \n j=%d",i,j); getch();//窗口保留函数,调试使用 return 0;}如果要用两个值去交换,那么肯定原创 2020-10-05 10:38:35 · 306 阅读 · 0 评论 -
C语言练习(5)——数组和指针访问形式
有时候我们经常会把指针和数组混淆,其实数组就是数组,指针就是指针,他们之间没什么关系。那么我们为什么会混淆呢?我混淆的原因是:1、数组和指针都是传址方式进行访问2、数组可以用指针或者下标方式对数组进行访问3、指针可以用指针方式或下标方式对指针进行访问总的来说就是:数组和指针都是用传址方式进行访问,而且访问方式在表达形式上相同。直接上题目...原创 2020-10-04 23:58:50 · 297 阅读 · 0 评论 -
C语言练习(3)——语句x=x&(x-1)的真实意义
今天遇到一个非常有意思的题目题目如下:#include <stdio.h>int func(int x){ int countx=0; while(x) { countx++; x=x&(x-1); } return countx;}int main(){ int i = func(12345); printf("i=%d",i); getch();//窗口保留函数,调试使用 return原创 2020-10-04 18:59:14 · 2325 阅读 · 0 评论 -
C语言练习(4)——指针传址
指针的传址经常把我弄晕,今天遇到一道比较有意思的题目可以加深一下对指针传址的了解。一般我们设置指针都习惯用*p表示,我们把 p 称为指针变量,p 里存储的内存地址处的内存称为 p 所指向的内存。指针变量 p 里存储的任何数据都将被当作地址来处理。题目:{ #include <stdio.h> int main() int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=p; p=q; q=r; printf(" *p=%d\n *q=原创 2020-10-04 15:47:19 · 213 阅读 · 0 评论 -
C语言练习(2)——内存对齐
缺省情况下,编译器默认将结构体、栈中的成员数据进行内存对齐。编译器将未对齐的成员向后移,将每一个都成员对齐到自然边界上,从而也导致了整个结构的尺寸变大。我们经常会接触到结构体,合理的设置结构体成员能做到节约内存的目的。例子1:#include <stdio.h>struct test1{ char a; short b; char c; int i;};struct test2{ char a; char c; short b; int i;};int原创 2020-10-04 11:34:43 · 307 阅读 · 0 评论 -
C语言练习(1)——函数的重载
函数重载问题#include <stdio.h>int fun(int x[], int k){ if(k==0) return (x[0]); return x[0]+fun(x+1, k-1);}int main(){ int x[ ]={1,2,3,4,5}; printf("输出结果:%d\n", fun(x,3)); getch();//窗口保留函数,调试使用}我们看一下程序运行的结果:这里要涉及的知识点:1、数组作为函数形参传递的是原创 2020-10-03 22:39:05 · 363 阅读 · 0 评论