c语言疑惑点

const:

编译器通常不为普通的const分配内存,而是将它们保存在符号表中,

这使它成为编译期间的常量,没有存储和读取操作,使它的效率也很高

const int * const p4 = &a;

const int * p4 = &a;

int * const p4 = &a;

记忆技巧     看*的位置

如果const在*的左侧 表示值不能改变,但是指向可以改变

如果const在*的右侧 表示指向不能改变,但是值可以改变

如果在*但两侧都有const标识指向和值都不能改变

5)malloc函数:

int main(int argc, const char * argv[]) {

// p中存放的是新申请的内存空间的首地址

//如果不对malloc申请的空间赋值,则其中存的是垃圾数

int *p = (int *)malloc(4 * sizeof(int));//16个字节

//calloc: 分配指定块数和长度的内存空间

//格式:calloc(块数,长度)

//分配了4块,每一块内存长度为4字节的内存空间

//它们的地址也是连续的可以自动初始化为0

//int *p1 = (int *)calloc(4, sizeof(int));

//relloc可以给已经存在的内存空间扩充大小

//返回新内存空间地址

//p = realloc(p, 40 * sizeof(int));

//使用一个函数进行初始化memset, 中间放的是asic码;

//memset(p, ‘A‘, 16);

if(p != NULL){

*p = 10;

*(p + 1) = 100;

*(p + 2) = 1000;

}else{

printf("申请内存空间失败!");

}

printf("%p %p %p", *p, *(p + 1), *(p + 2));

return 0;

}

时间: 2024-08-10 17:11:18

c语言疑惑点的相关文章

脚本语言的几点疑惑解析

问题1:为何叫脚本语言? 脚本语言英文是script language. 所谓script的解释是:A copy of a text used by a director or performer.也就是按照script进行导演或演出. 用在计算机上可能就变成了:可以执行的文本. 有人认为:源程序是文本格式,可以被解释执行的语言可以算作脚本语言.如:python,perl,php,shell,awk等等,许多.不过,有一些脚本语言已经发生了变化,如python,perl已经可以编译成中间代码然后

c语言的疑惑(一)头文件: stdlib.h

stdlib.h是C标准函数库的头文件,声明了数值与字符串转换函数, 伪随机数生成函数, 动态内存分配函数, 进程控制函数等公共函数. C++程序应调用等价的cstdlib头文件. 当你需要使用一下函数的时候,可以将这个头文件包含进来: 函数 stdlib.h中声明的库函数可分为六类:类型转换.伪随机数.动态内存分配与回收管理.进程控制.搜索及排序.简单数学. 类型转换 atof把字符串转换为双精度浮点数.相当于strtod(s, (char**)NULL). atoi把字符串转换为整型. 相当

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

[c语言]运算符的优先级与结合性

c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而结合性则在相邻的运算符的具有同等优先级时,决定表达式的结合方向. [赋值运算符“=”] 对于赋值运算符来说,常会用到的是连续赋值的表达式.比如“a=b=c”. 这里的变量b的两边都是赋值运算,优先级当然是相同的,那么应该怎么理解这个表达式呢?我们知道,赋值表达式具有“向右结合”的特性,这就表示这个表

GO语言结构体相等性

go语言结构体相等性是通过结构体成员的相等来判断的. 之前还在疑惑errors.New返回的结构体为什么会不相等,而且Read函数会返回io.EOF,很多例子代码都会把Read返回返回的error值来和io.EOF做比较,原来io.EOF是错误对象的指针,而不是错误对象本身.一个对象被实例化再多,他们的对象指针一定是不同的,这样就可以得知Read函数返回值和io.EOF比较的原因,因为比较的就是对象指针值,是纯数字的比较,这样也就区分了对象的不同实例.

浅析如何学好C语言

今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的1和0进行编码的:是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的那个时代,那么就没有什么图灵奖了.C语言程序设计是我们的专业基础课,但是C语言本身却是一个非常强大的工具,它是到

学会了 C 语言真的可以开发出很多东西吗?

马里奥碰到花朵就变身. 什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有.什么是花?一个 16 × 16 的正方形.什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色.什么是褐色?暂且说它是 0x887000 这个数字.什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠.什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 256 × 240 个小色块的矩形)中 X 方向 101 到 116.Y 方向

D语言与C语言的互相调用

很多语言都可以实现与C语言的互相调用,但我觉得D语言做的更好些,D与C的兼容是二进制兼容,不是在源码上的兼容,也就是说编译手的二进制文件是可以互相链接的.废话不多说,直接上例子 一.在D语言中调用C函数 首先是准备一个C函数 // foo.c #include <stdio.h> int test() {     printf("message from c\n");     return 123; // 随便返回一个值 } $ gcc -c foo.c 生成 foo.o