关于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";