关于c语言中字符串指针变量的问题

2024-10-30 00:17:23
推荐回答(5个)
回答1:

ps指向"this is a book"的首地址,即第一个元素,但是指针有一个运算就是 加法运算,
ps + 1 就是 ps的地址 + sizeof(Char) , 后面的sizeof(char)就是偏移地址,C++只所以提供指针的加法运算,这与汇编语言中的offset是一样的。 ps = ps + 10; 就相当于 ps + sizeof(char) * 10,就是加10个字符的地址,它的内容就是字符'b' 没事可以到0x30 百度贴吧 耍耍,这些都是很基础的东西哦。

回答2:

这里没有类型转换的内容,指针就是存放地址的,
你执行char *ps="this is a book"语句时,系统将字符串第1个地址存放
到ps变量中,后面让这个地址自加10个字节,于是地址是字符串中b的地址.
printf语句的意思就是打印从某个地址开始的字符串,直到字符串结尾.
无论ps指向字符串还是其他的数据类型,printf都会把这个地址开始的数据
当成字符串来打印.
字符串指针变量的意思就是你在ps=ps+n;时加的是n个字符的地址,如果
ps定义成int *型的,假设int占4个字节,ps=ps+n;那么ps中存放的地址就会
加10*4而不是10*1了.
总之,字符型指针不一定就指的是字符,它指向谁不会有强制类型转换的
动作发生.

回答3:

楼主你好

字符指针ps赋值后是字符串"this is a book"的首地址 也就是说此时ps指向第一个字符't'
*ps就是't'

n=10;
ps=ps+n;
就是使指针ps指向字符串"this is a book"的第11个字符 也就是'b'

那么
printf("%s\n",ps);
就是输出以ps为首的 以'\0'结束的字符串"book"

希望能帮助你哈

回答4:

字符指针ps赋值后是字符串"this is a book"的首地址 也就是说此时ps指向第一个字符't'
*ps就是't'
n=10;
ps=ps+n;
就是使指针ps指向字符串"this is a book"的第11个字符 也就是'b'
那么
printf("%s\n",ps);
就是输出以ps为首的 以'\0'结束的字符串"book"
ps 是一个指针,指向那个字符串,后来指针+10,所以就指到了后面的字符

回答5:

这个指针型变量的内容并不是"this is a book" 而是"this is a book"的第一个字符的地址付给ps,在print的时候,系统先输出它所指向的第一个字符数据,然后自动使ps加1,直到'\0'结束。