C语言数组和指针

一、数组
1、数组初始化
int arr[10] = {10,9,8,7,6,5,4,3,2,1,0};  //错误!越界了 
int arr[10] = {9,8,7,5}; //正确,后面的6个元素初始化0
int arr[] = {9,8,7};  //正确:元素个数为 3 
int arr[]={};  //错误,到底是几个元素? 
2、C语言中,二维数组是按行存储的
int arr[2][] = { {1,2,3}, {4,5,6} };//错误,列不可省略
3、数组元素的表示方法是:
数组名称[行][列]
对于m行n列的二维数组,a[0][0] 是数组的第一个元
素,a[m-1][n-1] 是最后一个元素
a表示第0行首地址,a+i表示第i行首地址
*(a+i),a[i],&a[i][0]表示第i行第0个元素地址
*(a+i)+j,a[i]+j,&a[i][j]表示第i行第j个元素地址
*(*(a+i)+j) ,*(a[i]+j),a[i][j]表示第i行第j个元素
4、数组名是一个常量。

二、指针
1、空指针是一个特殊的值,C语言为指针类型的变量专门定义一个空值,将空值赋值给一个指针变量以后,说明该指针变量的值不再是不定值,是一个有效的值,但是并不指向任何变量。空指针写作NULL,其数值为0。
2、若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址
3、使用递增/递减运算符(++ 和 --)将指针递增或递减 ,一个类型为 T 的指针的移动,
以 sizeof(T)为移动单位。 

三、数组作为形参,数组名不是常量而是一个指针。
void fun(int a[3][3])
{
    printf("sizeof(a) = %d\n", sizeof(a));//输出4
}
void main()
{
    int a[3][3];
    fun(a);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值