1. 首页 > 科技

关于C语言的字符串指针的问题? c语言字符串指针

关于C语言的字符串指针的问题?c语言字符串指针

问一个关于C语言字符串指针和二级指针的问题。

呃,本来看有人回答了,就没有抢限时的,结果看还没说清楚就写了一下,刚写完,敲回车的时候,刚好系统更新,弹重启。希望不要答完,你已经选了答案了。

第一个问题是 指针的问题,

string是一个指向字符的指针,它是一个地址,*string 就是取string这个地址指向的内容,因为string是一个指向字符的指针所以他 *string得到的就是一个字符,也就是 字符串的首地址‘h'。

而%s呢,是打印字符串,实际上呢是打印一个字符数组(或者叫做c风格字符串),他打印的是以string为首地址,以'\0'结束的字符数组,就是说如果你的数组最后没有'\0',他就会一直打印内存里面的东西直到遇到内存里面恰好有一个'\0’,当然,某个程序可以访问的内存是有限的。

第2个问题是 二级指针的问题,

p是一个指向指针的指针,或者说指向地址的地址,他指向的是一个执行字符的地址,所以他*p得到的就是一个字符指针。

其实你可以这么看

char *string;

char *(*p); *p 等价于 string,可以用string的地方就可以用*p,

所以 printf("%s",string); 替换一下就变成 printf("%s",*p);了。

欢迎追问。刚就是写这句的时候被重启了,nnd。

关于C语言中指针的问题?

int *p;和int* p;是一样的

printf中的%p是打印指针地址

C语言中的指针指向字符串

1 方法二是对的。原因是字符串必须存在字符数组中,方法一只定义一个变量,无法存储字符串。

2 方法3。

char str[10];

char *p=str;

gets(p);

c语言,关于指向字符串首元素的指针

你都说是字符串常量了,常量是存放在常量区中的。只有在程序结束的时候,常量所占用的内存才会被释放。

是不是这样的:

char *p = "hello world";

char *p = "other string";

PS:"hello world"所占用的空间依然存在,只是指向其首地址的指针被覆盖了,p指针指向了"other string";