15-字符串与指针

一维数组和一维数组和指针

1、数组名就是数组的首地址。

int a[10];  a就是首地址  int*p=a;

 

二维数组和指针

int a[3][5]

行地址:a+0(&a[0])   a+1(a[1])    a+2(&a[2])

列地址:a[0]+0   a[0]+1    a[0]+2   a[0]+3   a[0]+4    

 

注意:利用指针引用二维数组关键记住:*(a+i)  a[i]等价一维数组和指针

1、数组名就是数组的首地址。

int a[10];  a就是首地址  int*p=a;

 

1、字符串与指针

字符串指针指向一块内存,存放字符串。

 

1、怎样去访问字符串?

a、用字符数组去一个一个去访问。

b、用指针去访问(可以省略掉数组的定义)

 

2、字符串指针的定义和赋值。

char *p = "Hello";

 

char *p;

p = "Hello";

 1  //==========================字符串指针的简单运用
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     char a[6] = "Hello";  //1
 7     char *p = a;
 8 
 9     //char *p = "Hello";    //2
10 
11     //char *p;   //3
12 
13     //p = "Hello";
14 
15      
16     printf("%s\n", p);  // %s 挨着打印地址里面的字符 遇到'\0'
17     printf("%s\n", a);
18     printf("%c\n", *p);  //'\0' %c
19     printf("%d\n", *p);
20     
21     return 0;
22 }

 

程序 标识符 关键字 运算符  每一个符号出现的时候 这个符号是什么。

//%d  %c  %e  打印的都是一个变量里面的内容 char 1 int 4 float 4

//%s   打印连续内存里面的内容 遇到'\0'结束

 

 1 //连接两个字符串
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     //字符数组的一个特点   定义数组的时候,内存开辟的大小是确定的。
 7     char a[100] = "Hello";
 8     char b[100] = "World";
 9 
10     char *p1 = a, *p2 = b;
11 
12     printf("移动前:%d\n", p1);
13 
14     for (; *p1 != '\0'; p1++);
15 
16     printf("移动后:%d\n", p1);
17 
18      
19     for (; *p2 != '\0'; p1++, p2++)
20 
21     *p1 = *p2;
22 
23      
24     printf("%s\n", a);
25     return 0;
26 }

 

2、字符串数组

//字符数组

char a[6] = "Hello";

 

//字符串数组

char name[6][15] =

{

"Faker",

"Gragon",

"Liangren",

"Banhave",

"Jack",

"Hualuo"

};

 

//字符串指针数组 里面的每一个元素都是指针

char *pName[] =

{

"Faker",  //6

"Gragon", //

"Liangren",//9

"Banhave",

"Jack",   //5

"Hualuo"

};

 

 1  //字符串指针数组的输入输出
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     ////字符数组
 7     //char a[6] = "Hello";
 8 
 9     ////字符串数组
10     //char name[6][15] =
11     //{
12         // "Faker",  //6
13         // "Gragon", //
14         // "Liangren",//9
15         // "Banhave",
16         // "Jack",   //5
17         // "Hualuo"
18     //};
19 
20      
21     //printf("%d\n", &name[0]);  // 15
22     //printf("%d\n", &name[1]);  //15
23 
24 
25     //字符串指针数组 里面的每一个元素都是指针
26     char *pName[] =
27     {
28     "Faker",  //6
29     "Gragon", //
30     "Liangren",//9
31     "Banhave",
32     "Jack",   //5
33     "Hualuo"
34     };
35 
36      
37     printf("%d\n", pName);  //地址
38     printf("%d\n", pName+1);  //p1+1
39 
40     for (int i = 0; i < 6; i++)
41     {
42         printf("%s\n", *(pName + i));
43     }
44  
45     return 0;
46 }

 

指针数组    所有元素都是指针

数组指针    一个指针 指向一个数组  元素不一定 int char float

函数和指针:  指针跟函数  二级指针与函数  数组和函数  二维数组和函数

 

转载于:https://www.cnblogs.com/tiantiancode/p/11131777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值