C语言 指针 初始化 达人进来解答~

来源:百度知道 编辑:UC知道 时间:2024/09/24 10:42:03
如果有指针 char* i; 不初始化直接用 *i="Hello"; 可以吗?
struct netif *mynetif = 0; 这样初始化为空指针后 再对mynetif的元素赋值可以吗?
指针的大小会根据输入或者赋值的长度发生改变吗?

指针是指向变量的地址的。
我刚开始学C语言的时候,也特晕,不明白指针到底有什么用。
比如你定义 int a;
a是一个整型的变量,而你定义 int *p;
其实p也是个变量,只是它存放的不单单是一个简单意义的变量,而且是个地址。
如你所说,char *t;t指向的应该是“hello”字符串的首地址,
给你解释清楚点吧
首先,系统会分配给字符常量(“hello”)一个地方,当然,就有首地址了吧;再给指针变量赋值的时候,就把存放字符串常量的首地址赋给了t
如果你用printf("%s",t); 就可以输出hello了。
对于结构体,其实他只是用户自己封装的数据类型,与预定义的int,char……没什么本质区别;要特别注意的是,对于结构体指针赋值的时候,要指明结构体内具体的元素,
比如你的结构体有struct netif
{ int a;
int b;
char c;//随便什么都可以
};
struct netif *mynetif = 0;
在具体赋值的时候,要
mynetif->a=1;
mynetif->b=2;//数值1,2就按你的需要给吧,随便的
mynetif->b=‘c';//随便的

指针指向的结构体内部的具体变量才可以赋值
指针的大小会根据输入或者赋值的长度发生改变吗?
至于指针的大小,是不会根据你的数据或者什么改变的
比如在上边例子上你在加个
struct netif
{ int a;
int b;
char c;//随便什么都可以
int d;
};
指针变量的大小也不会改变
当你定义完结构体的时候,结构体netif所占的空间就确定了,你如果用的是TC,所占空间是2+2+1+1字节,如果是VC,所占空间是4+4+1+2;
结构体变量所占的空间是不会发生变化的

可以的

可以的

指针的大小是永