当我声明一个char *固定的字符串并重用指针指向另一个字符串
/* initial declaration */
char *src = "abcdefghijklmnop";
.....
/* I get the "warning: assignment makes integer from pointer without a cast" */
*src ="anotherstring";
Run Code Online (Sandbox Code Playgroud)
我试图重铸指针但没有成功.
bta*_*bta 30
当你写下这个陈述时
*src = "anotherstring";
Run Code Online (Sandbox Code Playgroud)
编译器将常量字符串视为"abcdefghijklmnop"数组.想象一下,您已经编写了以下代码:
char otherstring[14] = "anotherstring";
...
*src = otherstring;
Run Code Online (Sandbox Code Playgroud)
现在,它正在发生的事情更加清晰.左侧*src是指char(因为src是指向类型的指针char),而右侧otherstring指的是指针.
这不是严格禁止的,因为您可能希望存储指针指向的地址.但是,在这种情况下通常使用显式强制转换(这种情况并不常见).编译器会抛出一个红色标记,因为你的代码很可能没有按照你的想法行事.
在我看来,你正在尝试分配一个字符串.C中的字符串不是像C++中那样的数据类型,而是使用char数组实现.您无法直接将值分配给字符串,就像您尝试的那样.相反,你需要使用像strncpy和朋友一样的函数,<string.h>并使用char数组而不是char指针.如果您只希望指针指向不同的静态字符串,则删除*.
警告来自您src在作业中取消引用的事实.表达式*src有类型char,它是一个整数类型.表达式"anotherstring"具有type char [14],在此特定上下文中隐式转换为type char *,其值是数组中第一个字符的地址.因此,您最终尝试将指针值分配给整数类型,因此警告.删除该*从*src,并预期它应该工作:
src = "anotherstring";
Run Code Online (Sandbox Code Playgroud)
自的类型srcIS char *.
| 归档时间: |
|
| 查看次数: |
185434 次 |
| 最近记录: |