c语言 指针(2) 指向字符串 函数的指针

错题分析:
问题1 :char *s="\ta\017bc"中指针变量s 指向的字符串所占字节数是6的原因。
问题2 :
char *s="\ta\018bc";
for(;s!=’\0’;s++)
printf("
"); 的循环次数是6的原因。

答1: ‘\t’ 是一个转义字符 相当于键盘“Tab”键
‘a’ 普通字符
'\017’转义字符 ASCII代码值为8进制数17即10进制数15的那个符号
‘b’ 普通字符
‘c’ 普通字符
然后再加一个字符串结束标志‘\0’所以指针变量s 指向的字符串所占字节数是6

答2:循环次数应该是6次,因为"\ta\018bc"中有六个字符加’\0’占7个字节,循环条件是*s!=’\0’,所以应该是循环6次!
其中 ‘\01’转义字符, soh . ASCII代码值为8进制数1即10进制数1的那个符号
千万不要理解’\018’为1个转义字符,因为018不是一个正确的8进制数(只能出现0~7的数码符号)
以上转自:https://blog.csdn.net/tomios/article/details/11712899

指向字符串的指针

变量复习:整型,浮点型,字符型,字符串
字符串:" "
字符型:’ ’
并且字符串的储存,只能用指针变量或数组
字符串是一个地址常量,代表第一个字符的地址
在c语言中只有字符变量,没有字符串变量

注意:在VS里要求严格, 所以char *p=“1234”;在其他平台上是ok的,在vs可以写为: char *p = (char *)“1234”; //使用强制类型转换 或 const char *p = “1234”;也可以在这里插入图片描述

指向函数的指针

函数名和数组名一样,是起始地址,而且是一个地址常量,是一个函数的起始地址。

定义

( * 指针变量名)(函数的参数);
如: int (*p)(int,int); 定义了一个指向函数的指针变量p, 第一个int代表函数的返回值是int型,后面两个int代表该函数有两个int型的参数。
注意(*p)两侧的刮号不可省略
在这里插入图片描述

调用

在这里插入图片描述

返回指针的函数

定义:类型名 *函数名(参数表列)

指针数组

类型名 * 数组名[常量表达式];
eg:
int*p[4]; //指针数组
int ( * p)[4]; //这是指向一维数组的指针变量
!此处注意区别

指向指针的指针变量

**指针变量名; (二级指针)

未完待续…

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值