指针和数组
char *str = "I lovefish.C.com!";int i ,length;
length = strlen(str);
两个问题 ,先谢谢各位了。
问题一:字符串没有定义直接引用,这不危险吗(野指针啊!);
问题二:strlen的作用对象不应该是先把字符串定义到数组当中,然后再把数组名放在strlen的括号里面吗。
1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符串给一个数组,然后在把数组变量赋值给指针,就不会有这种警告了。
2、strlen是对字符串进行操作,里面的参数可以是数组名,也可以是已经赋值的指针。实际上数组名也是指针的一种形式。 问题一:字符串没有定义直接引用,这不危险吗(野指针啊!);这确实很危险 sunrise085 发表于 2020-4-30 15:41
1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符 ...
嗯嗯,那小甲鱼这种方法就不好呗,正常的是先放入一个数组里面
1. 野指针一般说的是NULL指针,或指针指向了应用程序不可读的空间,比如内核空间,这里在定义时,其实是定义了一个const char *, 这个指针编译器在编译时
会为这个字符串生成一个指定的内存地址,这个地址位于应用程序空间,所以不是野指针。
2. strlen中的参数是一个指针(也就是一个地址),它只会根据这个地址去找结尾符0的位置,不会转换为数组。 上善若水··· 发表于 2020-4-30 15:45
1. 野指针一般说的是NULL指针,或指针指向了应用程序不可读的空间,比如内核空间,这里在定义时,其实是定 ...
哦哦,这样子的啊,明白了
sunrise085 发表于 2020-4-30 15:41
1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符 ...
警告是因为用的C++环境
C语言环境没有警告
页:
[1]