静态数组和动态数组

C语言中的数组,按照理解分为两种:
1 狭义的数组,指的是以
TYPE name[M]...;
形式定义的数组,也称为静态数组。静态数组在定义的时候就确定了数组的大小,无法在运行中对其做改变。
2 广义的数组,除静态数组外,还包括动态数组。
动态数组的本质为指针,如
TYPE *name;
对指针上可以用malloc等函数,分配内存空间,实现与静态数组类似的操作。对于动态数组,可以使用realloc函数,
void * realloc(int size, void *p);
重新分配参数p上的内存大小为参数size。
新返回的的地址值,可能与参数p的原始地址值不同。
该函数可以使p上可使用的内存大小调整到size字节,从而实现动态数组大小的调整。

1.对静态分配的数组和动态分配的数组分别使用sizeof获得其长度,结果是不一样的:
        int a[10]; 则sizeof(a)等于10*sizeof(int)。
        int* a=(int*)malloc(10*sizeof(int));则sizeof(a)等于sizeof(int*)。

2、数组名作为函数的参数时
    数组名作为函数的参数传递时,在函数内使用sizeof(a)(此处假设a为数组),结果都为指针的长度(无论a为静态数组还是动态数组),而非数组的实际长度。

3.用指针指向string类的对象

#include<iostream>  
#include<string>  
using namespace std;  
  
int main(void)  
{  
 string s = "hello";  
 //定义一个char类型指针,把string s的首元素地址赋给pt,则pt指向字符串s.  
 char *pt = &s[0];   
 cout << pt << endl;  
 return 0;  
}  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值