C -- 数组和指针

什么“循环”、“分支和条件”、“函数” 这些都不想看了。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、关键字:static

二、运算符:& * (一元)

三、创建与初始化数组

四、指针 及指针与数组间的关系

五、编写使用数组的函数

六、二维数组


对于指针加 1 ,等价于对指针的值加上它指向的对象的字节大小。

当妴一个指针时,系统只分配了用来存储指针本身的内存空间,并不分配用来存储数据的内在空间。所以 int *p;  *p = 5;  是严重错误的

C创建了指针数组、函数指针、指向指针的指针数组、指向函数的指针数组等等。

对于处理数组的函数,只能传递指针,原因是这样能使程序的效率更高。(如果通过向函数传递数组,那么函数中必须分配足够存放一份原数组的拷贝的存储空间,然后把原数组的所有数据复制到这个新数组中。


保护数组内容

如果不想在函数中改变数组的值,则最好使用如下方式定义形参,{当函数想改变数组的值时,会报错}

int sum(const int ar[],int n)

{

**************

}


const 可以创建数组常量、指针常量以及指向常量的指针等等


指向常量的指针不能用于修改数值,如下:

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

const int *p = kk;

p[2] = 111; //错误

p++ //正确


关于指针赋值和const有一些规则:

  将常量或非常量数据的地址赋给指向常量的指针是合法的。

  只有非常量数据的地址才可以赋给普通的指针。[也就是说,常量数据的地址不能赋给普通指针。不然就可以改变改常量数据的值了]


多维数组与针指(这个看起有些头大,但我还是基本了解了。哈哈 ^ ^

int zippo[4][2] ;  zippo[0] a[1] a[2 ] a[3] 都是指针,例: zippo[0] 就是指向2个int元素的这么一个数组。zippo[0][0] a[0][1] 是变量,表示具体的值。

多维数组中,只要其包含的还有针的数据,都是指针,就像是 zippo[0] 或 zippo  (zippo 是一个指向两个int类型的指针)

zippo 与 zippo[0] 的值是一样的。[ 因为数组名就是数组首元素的地址 (zippo的地址是zippo[0] ,而zippo[0]的地址是zippo[0][0]) ]


int zippo[4][2] ; 

int  *p[2] = zippo; //错误 。这是创建含有两个指向int类型的数组【数组元素为两个指针】。

int (*p)[2] = zippo; //正确。这是创建一个指向两个int类型数组的指针【只创建了一个指针】





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值