如何char用字符串(字符数组)初始化指针,但int指针不是整数数组?
当我试着这个
int* a={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误说法
错误:标量对象'a'在初始化程序中需要一个元素
但,
char* name="mikhil"
Run Code Online (Sandbox Code Playgroud)
工作得很好.
我一直在浏览网站,但尚未找到答案.
用一个例子来解释这个问题是最容易的(至少对我来说).
我不明白为什么这是有效的:
#include <stdio.h>
int main(int argc, char* argv[])
{
char *mystr = "hello";
}
Run Code Online (Sandbox Code Playgroud)
但是这会产生一个编译器警告("初始化使整数从没有强制转换的整数中生成"):
#include <stdio.h>
int main(int argc, char* argv[])
{
int *myint = 5;
}
Run Code Online (Sandbox Code Playgroud)
我对第一个程序的理解是创建一个名为mystr的变量,类型为pointer-to-char,其值是字符串文字"hello"的第一个字符('h')的地址.换句话说,使用此初始化,您不仅可以获取指针,还可以定义指针指向的对象(在本例中为"hello").
那么,为什么int *myint = 5;看起来似乎没有实现与此类似的东西,即创建一个名为myint的变量类型指针指向int,其值是值'5'的地址?为什么这个初始化既不给我指针也定义指针所指向的对象?