定义指针数组c语言源码,C语言day09-01指针和数组

#include

int main()

{

#warning 指针和数组

#warning 定义一个指针指向数组

/*

int num = 10;

int *numP = #

num = 55;

*numP = 100;

printf("%i\n",num);

printf("%i\n",*numP);

int ages[3] = {1,3,5};

// 数组名称就是数组的地址,数组的地址就是首元素的地址

printf("ages = %p\n",ages);

printf("&ages[0] = %p\n",&ages[0]);

// 指针是专门用于保存地址

// 数据类型 *变量名称;

// 由于数组的首元素的地址就是数组的地址,所以定义一个指针指向数组其实就是定义一个指针指向数组的首元素,所以数组的首元素是什么类型,那么指向指向数组的指针就是什么类型.

// int *p = &ages[0];

int *p = ages;

printf("p = %p\n",p);

printf("&ages[0] = %p\n",&ages[0]);

*/

#warning 如何利用指针操作数组 方式1

/*

int ages[3] = {1,3,5};

ages[0] = 998;

// 相当于 0x7fff5fbff79c[0]

printf("ages[0] = %i\n",ages[0]);

int *p = ages; // int *p = &ages[0]; &ages == ages

printf("p = %p\n",p);

printf("ages = %p\n",ages);

// 因为p指针中存储的值和ages中存储的值相同,所以以前用ages的地方都可以使用p来替代

p[0] = 221;

// 相当于 0x7fff5fbff79c[0]

printf("age[0] = %i\n",p[0]);

for (int i = 0; i < 3; i++) {

printf("p[%i] = %i \n",i,p[i]);

}

*/

#warning 方式2

/*

int ages[3] = {1,3,5};

int *p = ages; //int *p = &ages[0];

printf("ages[0] = %i\n",ages[0]);

printf("*p = %i\n",*p);

printf("指针加1之前 p = %p\n",p);

// p = &ages[1];

// 指针+1, 并不是真实的+1,而是+4

// 指针+1, 其实是加上指针类型所占用的长度

// 指针类型的两个用途: \

第一个用途 : 取值的时候, 会根据指针类型所占用的字节 去 取出对应字节的数据 \

第二个用途, 用于做加法运算, 指针+1 , 其实是加上指针类型所占用的长度,如果当前指针类型是int, 那么+1本质上是加上4个字节

p = p + 1;

printf("指针加1之后 p + 1 = %p\n",p);

printf("*p = %i\n",*p);

// p = &ages[2];

p = p + 1;

printf("指针加1之后 p + 2 = %p\n",p);

printf("*p = %i\n",*p);

int a = 10;

a = a + 1;

printf("a = %i\n",a); // 11

*/

/*

int num = 10;

int *numP = #

printf("num = %i\n",num);

// *numP 代表访问numP之乡的那块内存空间

printf("*numP = %i\n",*numP);

*/

/*

char c = 'a';

char *cp = &c;

printf("cp = %p\n",cp);

cp = cp + 1;

printf("cp + 1 = %p\n",cp);

cp = cp + 1;

printf("cp + 1 = %p\n",cp);

*/

int ages[3] = {1,3,5};

int *p;

p =ages;

/*

printf("age[0] = %i\n", *p + 0);

printf("age[i] = %i\n", *(p + 1)); // p = p + 1; *p;

printf("age[2] = %i\n", *(p + 2)); // p = p + 1; *p;

*/

/*

for ( int i = 0 ; i < 3; i++) {

printf("ages[%i] = %i\n",i,*(p + i));

}

*/

/*

只要一个指针指向了数组,那么访问数组就有3种方式:

1 : ages[0];

2 : p[0];

3 : *(*p + 0); // 大神的写法 另一种访问方式 0[p]

*/

printf("age[0] = %i\n",0[p]);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值