C语言基础(类型、数组、指针、传参)

C语言基础(类型、数组、指针、传参)

现状态

  • 熟悉Java、C#语言编程
  • 了解C基本语法
  • 想要深入学习C、C++

类型

  • 六大基本类型:
    int, long, short, doube, float, char
  • 空类型:
    void
  • 数组类型:
    []
  • 指针类型:
    *
类型长度

类型长度即一个类型变量在内存中所占的字节数,可通过sizeof()获取;
例:

int i = 1;
printf("%d",sizeof(i));
//printf("%d",sizeof(int));

输出结果为4,代表一个int类型的变量在内存中占4个字节。
(在此可以很方便的理解int的最大值,4字节最大值为0xFFFFFFFF)

注:sizeof不是函数,是一个操作符。

数组

1. 如何声明一个数组?例:

int arr[] = {1,2,3,4,5,6,7,8,9};

2. 如何获取一个数组的长度?
由sizeof可得到数组的总字节长度和单个成员的长度,所以得:

int length = sizeof(arr[0])/sizeof(arr);

指针

1. 指针是什么?
答:指向一个内存地址,此地址为类型变量的第一个字节地址。
例:

int *handle = arr;
printf("0x%x \n",handle);

输出为 0x78d1c3d0 ,此处0x78d1c3d0即为arr在内存中的首地址,所以此时handle[0] == arr[0]…
注:printf中%d表示一个整数,%x表示一个十六进制数。

2. 指针有长度吗?长度是多少?
答:指针也是一种类型,所以也有长度,长度在各系统平台不一致。
例:

printf("%d",sizeof(handle));

输出为8。
注:在32位系统环境下指针的长度应该为4,我这里是64位Ubuntu,Windows应该同理。

传参

1. 在传输参数的时候,传输的是数值还是指针?
答:指针,例中举出一个有力证明。
例1:

#include "stdio.h";

void main(){
    int arr[] = {0,2,3,4,5,6};
    printf("0x%x \n",arr);
    init(arr);
}
void init(int arg[]){
    printf("0x%x \n",arg);
}

例2:

#include "stdio.h";

void main(){
    int arr[] = {0,2,3,4,5,6};
    printf("0x%x \n",arr);
    init(arr);
}
void init(int Addr){
    printf("0x%x \n",Addr);
}

输出结果为

0x984f3020
0x984f3020

0xcc776550
0xcc776550

由此可见,参数传递的是指针(即内存地址),而并非数值。

总结

C、C++与Java、C#之类的解释语言不同,编程时需要更加注意内存中的状态,便能更加方便的理解其中各种特性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值