指针专题二

<字符指针与字符串上>

笔记

欲速则不达,建议先完成 的任务!

继续学习

通关时间从学习第1个课程开始计时

9天内通关,可获得赏金100元

开始学习
该课程需要登录后才能观看
3400 位同学正在学习! 查看详情

北原

*(p)[2]是什么意思?用来赋值和*p有什么区别??

int a[3][2];int *(p)[2];p = a;int a[3][2];int *p;p = a[0]; 这两种赋值和定义方式有什么区别

新开

2

回答

字符串数组即字符指针数组。 这句话正确吗?

赢在物联网回复:

看这句话具体怎么理解,若是定义的字符串变量数组,它是在内存中占存储空间的,若是指针字符数组,它只是指向代码区中的一段数组,不占内存。例如:char name[5] = "alex!", char * pName = "alex!".注意这两个定义,一个字符串变量,在内存中占5个字节。后者只是一个字符串指针,只占一个存放指针的空间。而字符串“alex”存储在code中。不占ram空间。

MAKERU653918491

1

回答

二级指针问题

杨老师回复:

指针加1移动的是一个数据类型的大小,你需要确定的是你的系统,该数据类型是几位哦。

曙光

3

回答

作业问题

MAKERU429110768回复:

你也都哦了也扣

Harven

1

回答

为什么要加个*(char+i)=*p;

吴老师回复:

你叫什么呀?  库里怎么找不到你的名字呢? 想跟你 QQ聊一下这个问题,但是找不到你。

*(char+i)  我猜测这里的 char 应该是一个 指针类型的变量吧,  前面加上 * 表示取内容, 

所以 *(char +i) = *p; 的意思是 吧 *P 的值 写到  char+i 所在的内存地址中。 如果还不明白,加QQ 1627698470

Usopp

2

回答

指针二 作业问题

韩hyr回复:

作业合格才会有答案哦

Usopp

1

回答

作业问题

二莹子回复:

作业自己挣扎挣扎就写出来啦,加油

Usopp

1

回答

二级指针问题

韩hyr回复:

q[i]这个是行地址,*q[i]取行地址的第一个元素值。

Usopp

1

回答

二级指针的问题?

二莹子回复:

 *(q + i) 的含义是,p的指向后移i个位置,对这个内存单元地址的内容做取值操作,取到的就是下标为 i 的数组元素。q[i]本来就已经是下标为 i 的数组元素了,是一个变量值,再加 * 就非法了,相当于对一个数做取值操作,要知道虽然内存单元的地址也是一个整数,但是是一个十六进制的8位数哇。

彩虹的微笑

1

回答

这里拿p的地址和 q++ 后的地址,这两个地址有什么可比性吗?

吴老师回复:

p 和 q 是两个变量 , 他们的地址没有 可比性, 除非  前面 有 q = p ; 赋值 这样的语句

笑着走下去

1

回答

字符指针p++在printf函数无效

韩hyr回复:

%p是打印指定变量的地址,注意写代码的细节,还有要注意p++的运算时序,先参数运算再自增1;

ghcghcghc

1

回答

小美老师说的书上是发的书吗,为什么有些例子我找不到在书上

韩hyr回复:

书上的是完整的知识内容,小美老师讲的是知识引导,会存在举得例子不一样的情况,知识点是一样的,多个学习角度不是更好么。

MAKERU595993406

1

回答

老师,为啥不写成printf("%s",*p); *不是表示取里面的目标吗,为啥不加*

杨老师回复:

%s是打印一串字符,传入字符串的首地址就可以了,*是取值,取出当前地址的值,我们要取一串而不是一个,所以不用*。

树枝

1

回答

指针数组与数组指针

XCK04000003回复:

请你把问题描述清楚一点

1

回答

为什么传字符串首地址给指针就能打印真个数组?

韩hyr回复:

传首地址是在告诉内存位置的首地址,打印数组还得是要用循环遍历每个数据单位的

Mr Tom

2

回答

本章作业题strcmp函数返回值是字符的ASCII差值,我的strcmp函数返回值是-1,0,1?

XCK04000003回复:

strcmp返回值: 若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。 你的做法和老师的做法都可以,不过推荐使用老师的做法更好,他的结果是两个字符串第一个不同的字符的差值

Mr Tom

1

回答

冰星宇

1

回答

请问每次新建一个.c文件时,那些模板#include...retuen0;怎么快捷显示出来的呀?

吴老师回复:

需要安装 vmconfig.tar.gz 。 在你的班级群文件中搜索 vim配置.mp4  看一下就可以了 

努力学习嵌入式的美少女战士

1

回答

为什么用指针指向字符串时,打印输出用printf("%s\n",p),那里为什么不用*p ?

韩hyr回复:

%s表示从指定的数据里识别一个字符串并打印字符串,字符串名字是一个指针常量,表示字符串首地址,用printf打印时用printf(“%s”, s);指针指向字符串时,借用了指针变量记录字符串首地址,所以用法同上面的一致了。*p这里表示取首地址位置的单位存储空间里的存储数据,也就是字符串的第一个字母,和指定的输出不一致,是不会正常打印的。

过去过不去的

1

回答

字符串指针数组

吴老师回复:

???  怎么了?

九亿少女的梦

2

回答

群号

韩hyr回复:

线上课程正式学员有同期班级群,如果是,可以联系你的班主任;线下课程的学生联系对应中心的老师。

九亿少女的梦

1

回答

这是什么意思啊

小灰灰回复:

这个问题得看一下具体的代码和实际的环境,可以群内问一下值班老师

张宇

3

回答

(int)p

韩hyr回复:

同学你的问题是什么呢?把指针强制转换成了整型?

张宇

1

回答

最后一个知识点

吴老师回复:

const 类型的变量 在定义的时候 是必须要初始化的。 ./a.out 196.168.…… 这样写就是为了给 argv进行初始化

张宇

1

回答

64位系统指针存储的地址确实32位

韩hyr回复:

虚拟机是华清提供的话,是32位的Ubuntu,和你的电脑系统没有关系的,有关系的是VMware workstations这个搭载Ubuntu,直接装在Windows的软件。

我好帅啊

1

回答

有啥办法helloworld 之间有个空格吗?正常两个单词见不都有空格吗

C语言

韩hyr回复:

可以呀,字符串支持空格存储,主要是输入输出函数会涉及到获取的问题,注意在这里的学习要细心!

明天会更好

2

回答

指针数组求长度n=sizeof(s)/sizeof(char ),这样求为什么不行?

C语言

十一回复:

个人理解是:sizeof(s)得到的是数组s所占的字节数,而数组s是一个指针数组,里面放了三个char类型的指针,一个char指针是4位字节(32位系统),所以sizeof(s)=12. 而sizeof(char)是char所占的字节数,等于1(32位系统),所以sizeof(s)/sizeof(char)=12.

而sizeof(char *)=4,表示一个char数据的地址所占的字节数,为4(32位系统),sizeof(s)/sizeof(char 8) = 3.

综上,二者不相等。

Forever

1

回答

看不了

小美回复:

课程视频托管服务商,即视频组云的机房出现了电力故障,导致整个网络出现了问题,现在可以看了。

刘源

2

回答

字符串指针

小美回复:

字符数组中存储字符串时,打印是比较特殊的,字符串,用起始地址,格式符写%s ,有问题,随时问,咱群里9:00~22:30,都有辅导老师在线的。十一,加油,积累蜕变哈

上次保存笔记

看见好看好看就很快很快就会看见

保存 修改