

解析“字符指针变量,数组指针变量,二维数组”
source link: https://blog.51cto.com/u_16261646/7872329
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 字符指针变量
字符指针变量是存放地址的
char ch = 'w';
char* pc = &ch;
*pc = 'w';
表达式的两个属性: 【值属性】计算后的值是多少 【类型属性】类型是什么

注:hello是常量字符串,不能被修改,是连续存放的,可用printf("%s\n", p);
打印字符串。
常量字符串指的是在程序中声明的一个不可更改的字符串变量
int main()
{
char str1[] = "hello bit";
char str2[] = "hello bit";
const char *str3= "hello bit";
const char* str4 = "hello bit";
return 0;
}
str1
和str2
以字符串的形式对数组进行初始化
str3
和str4
是指针,指向的是字符串,指向的内容是"hello bit"
(常量字符串)常量字符串不能被修改
数组名是首元素的地址,
在str3和
str4中,
指向的是同一块地址, 相同内容保存一份

2.数组指针变量
指针数组是存放指针的数组
字符指针——指向字符的指针,存放的是字符的地址char ch='w';char *pc=&ch.
整形指针——指向整型的指针,存放的是整型的地址int n=120;int*p=&n
数组指针——指向数组的指针,存放的是数组的地址int arr[10];int(*p)[10]=&arr;
数组指针变量——存放数组地址,指向数组的指针变量int(*p)[10]=&arr;

注:p先和*结合,说明p是⼀个指针变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。所以p是⼀个指针,指向⼀个数组,叫数组指针。[]
的优先级要高于*
号的,所以必须加上()
来保证p先和*
结合。
int *p1[10];//存放指针的数组
int (*p2)[10];//存放数组的指针

3.二维数组
void zhizhen_(int arr[3][5], int a, int b)
{
int i = 0;
for (i = 0; i < a; i++)
{
int j = 0;
for (j = 0; j < b; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };
zhizhen_(arr, 3, 5);
return 0;
}
法二:(用数组指针)
void zhizhen_(int(*arr)[5], int a, int b)
{
int i = 0;
for (i = 0; i < a; i++)
{
int j = 0;
for (j = 0; j < b; j++)
{
//printf("%d ", arr[i][j]);
//printf("%d ", *(arr+i)[j]);
printf("%d ", *(*(arr + i)+j));
}
printf("\n");
}
}
int main()
{
int arr[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15} };
zhizhen_(arr, 3, 5);
return 0;
}
二维数组的每一行是一个一维数组,这个一维数组可以看成是二维数组的一个元素,所以二维数组可以认为是一维数组的数组;二维数组的数组名表示数组首元素的地址,就是第一行的地址,也就是一维数组的地址


第⼀⾏的⼀维数组的类型就是
int [5]
,所以第⼀⾏的地址的类型就是数组指针类型int(*)[5]
那就意味着⼆维数组传参本质上是传递了地址,传递的是第一行这个⼀维数组的地址 ⼆维数组传参,形参的部分可以写成数组,也可以写成指针形式。
Recommend
-
9
C语言的数组指针能带来什么好处?为什么要使用它? 发表于 2019-09-16 19:09...
-
22
c语言入门22,三分钟分清数组指针和指针数组,绕口令名字谁取的 发表于 2018...
-
11
一、项目背景 1、项目需求 复习python基础原理的过程中,发现自己对于python对象有些错误理解,故单独写一篇博文记录,以此勉励自己,加深记忆 2、实施时间 2020-12-29 二、 技术背景...
-
3
数组和指针的异同 2021年1月3日 / 3次阅读CC++ 编写C语言代码,数组和指针可能是最trick的地方,它们本质上相同,但用法细节上有一点点不同。 char *k; 定义一个指针。还可以初始...
-
7
这次的题目都不太复杂。但是深究起来还挺难的。 判断对象类型如果只是简单的判断,可以直接 typeof instanceof Array.isArray 之类。但是项目上,一般常用 Object toString 方案。...
-
7
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
-
10
C++ 指针与二维数组名 和一维数组类似,C++ 将二...
-
13
Java如何将字符串转换为字符数组? 解道Jdon ...
-
3
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTO创作者[新...
-
21
【笔记】C 语言的字符数组与字符串 捕捉一只爱折腾的绯鞠 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK