Juniorboy 发表于 2020-4-30 14:59:47

指针和数组

char *str = "I lovefish.C.com!";
int i ,length;

length = strlen(str);



两个问题 ,先谢谢各位了。

问题一:字符串没有定义直接引用,这不危险吗(野指针啊!);

问题二:strlen的作用对象不应该是先把字符串定义到数组当中,然后再把数组名放在strlen的括号里面吗。

sunrise085 发表于 2020-4-30 15:41:13

1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符串给一个数组,然后在把数组变量赋值给指针,就不会有这种警告了。
2、strlen是对字符串进行操作,里面的参数可以是数组名,也可以是已经赋值的指针。实际上数组名也是指针的一种形式。

永恒的蓝色梦想 发表于 2020-4-30 15:43:46

问题一:字符串没有定义直接引用,这不危险吗(野指针啊!);这确实很危险

Juniorboy 发表于 2020-4-30 15:44:26

sunrise085 发表于 2020-4-30 15:41
1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符 ...

嗯嗯,那小甲鱼这种方法就不好呗,正常的是先放入一个数组里面

上善若水··· 发表于 2020-4-30 15:45:33

1. 野指针一般说的是NULL指针,或指针指向了应用程序不可读的空间,比如内核空间,这里在定义时,其实是定义了一个const char *, 这个指针编译器在编译时
    会为这个字符串生成一个指定的内存地址,这个地址位于应用程序空间,所以不是野指针。

2. strlen中的参数是一个指针(也就是一个地址),它只会根据这个地址去找结尾符0的位置,不会转换为数组。

Juniorboy 发表于 2020-4-30 15:48:44

上善若水··· 发表于 2020-4-30 15:45
1. 野指针一般说的是NULL指针,或指针指向了应用程序不可读的空间,比如内核空间,这里在定义时,其实是定 ...

哦哦,这样子的啊,明白了

人造人 发表于 2020-4-30 18:37:39

sunrise085 发表于 2020-4-30 15:41
1、指针这样用的确会有警告,但也能运行。警告是:你把constant常量字符串赋值给了char*;一般应该先把字符 ...

警告是因为用的C++环境
C语言环境没有警告


页: [1]
查看完整版本: 指针和数组