C语言 笔记

编程入门 行业动态 更新时间:2024-10-08 19:45:16

C<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言 笔记"/>

C语言 笔记

定义与声明最重要的区别:定义创建了对象并为这个对象分配了内存空间,声明没有分配内存空间。

 

register 关键字是尽可能的将变量放在CPU内部寄存器中,但不是绝对,由CPU确定。register 必须是一个单个的值,并且长度应小于等于整型长度的值,并且不能用&获取register变量的地址。

 

static 修饰变量

              静态全局变量,作用域只限于被定义的文件中,其他文件不能使用该变量

              静态局部变量,只能只本函数中可以使用,因为被static 修饰的变量总是在内存的静态区,即使这个函数运行结束,静态变量不会销毁,函数下次使用时仍然能使用这个值。

 

所有宏定义、枚举常数、只读变量全部使用大写字母命名,用下划线分割单词。

 

定义变量时,记得初始化。

 

unsigned int i;

for(i=9;i>=0;i--)

{

       printf(“%d”,i);

}

结果会陷入死循环,因为i为无符号整数,i>=0恒成立。

 

char a[1000];

int i;

for(i=0;i<1000;i++)

{

       a[i]=-1-i;

}

printf(“%d”,strlen(a));

因为char 类型本身的限制  范围为-128~127;并且-255的补码为0,所以输出的结果为255;

 

使用switch时,一定要写default语句

 

case 语句后面可以是 const修饰的变量

 

const定义的只读变量在程序运行过程中,只有一份拷贝,#define 定义的宏常量在内存中有若干个拷贝,宏定义在编译的时候确定值,const修饰的只读变量在编译的时候确定其值。

 

const修饰的变量在程序中不可更改。

 

 

 

const int *p;//p可变,p指向的对象不可变

int const *p;//p可变,p指向的对象不可变

int *const p;//p不可变,p指向的对象可变

const int *const p;//指针p和p指向的对象都不可变

 

先忽略类型名,const修饰哪个,哪个不可变。

 

const 修饰函数参数,当不希望这个参数值被函数体内意外改变时使用。

const修饰函数返回值,返回值不可改变。

 

volatile 和 const 并不矛盾,控制的范围不一样,volatile在程序之外,可能异想不到的改变,const在程序本身不能改变。

 

一个 int * 类型的模子在内存上咔出了4个字节的空间,然后把这个4个字节大小的空间命名为p,同时限定这4个字节的空间里面只能存储某个内存空间,即使你存入别的任何数据,都将被当作地址处理,而且这个内存地址开始的连续4个字节只能存储某个int类型的数据。

在32位系统下,不管什么样的指针类型,其大小都为4byte.

 

在内存地址0x12ff7c上写数据:

int *p=(int *)0x12ff7c;

*p=0x100;

或者  *(int *)0x12ff7c=0x100;

 

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。

数组指针:首先它是一个指针,他指向一个数组。在32为系统下永远是4个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。

 

 

 

指针*p

p为指向变量的地址

*p为指向变量的值

&p为指针的地址(切记指针也是有值的)

更多推荐

C语言 笔记

本文发布于:2024-02-13 10:02:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   笔记

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!