sizeof,数组,指针

sizeof计算数据类型或变量长度(包括‘\0’),如果计算的变量是一个表达式或函数,只与其最终结果或返回值的类型相关,表达式并不计算,函数也不进行执行。注意计算字符串时计算\0,而strlen不计算\0。

int a[10];

sizeof(a)//计算的就是整个数组的长度,为40; &a,表示取出整个数组的地址,sizeof(&a)=4,sizeof(*&a)=40

其他情况,数组名a均退化为指针。

动态数组的创建和释放
(1)一维数组:
int* arr = new int[n];
delete[] arr;
(2)二维数组:
int** arr = new int*[row];
for (int i = 0; i < row; i++)
{
    arr[i] = new int[col];
}
for (int i = 0; i < row; i++)
{
    delete[] arr[i];
}
delete[] arr;

指针数组:int* arr_ptr[5];  这是一个元素全部是指针的数组

数组指针:int (*arr_ptr)[5]; 这是一个指针,指向了一个数组

以下个人理解,不保证正确:

int arr[5] = { 1,2,3,4,5 };

arr的本质并不是一个地址,而是一个地址加一个大小,表示的是整个数组

输出arr, &arr, &arr[0]的值是相同的,但是arr本质并不是一个地址,而是一个完整的数组,包含arr[0]的地址和数组的大小,当函数调用的时候arr才从数组退化为指针。

而int (*ptr)=&arr;表示ptr指向了数组arr, (*ptr)[i]=arr[i]。ptr+1指向的是arr[4]后面的地址。

 

void类型指针,可以储存任意类型的对象的地址。

指向常量的指针:指针不能改变所指对象的值,但是可以改变所指对象。

const int *p=&a;

指针类型常量:不可改变所指对象

int * const p=&a;

指针型函数,返回值为指针的函数

int* a(){

  return int*;

}

指向函数的指针:

int B(double) { return int; }

int (* A)(double);

A  a;

a=B;

转载于:https://www.cnblogs.com/spock12345/p/11558399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值