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;
}