桃馆异食话 百度网盘:C语言指针问题?

来源:百度文库 编辑:高考问答 时间:2024/03/28 22:28:24
利用指针移位差,计算字符串长度:
char *str="welcome to study C program Language! \n";
char *p=str;
while(*p)p++;
printf("Length of the string is: %d \n",p-str);
其中while(*p)p++是什么意思?最后输出的p-str是什么意思?
*p=str是把str的字符串赋值给指针p吗?

*p=str是把str字符串的首地址传给指针p
while(*p)p++;是在p地址存放的字符在有效时指针指向下一个地址
例如,welcome....中
w的地址为000000 e的地址为000001(假设字符只占一个地址)
刚开始p=000000,p++之后p=000001....,当p=最后一个字符地址之后,p地址存放的字符就不是正常值了,此时while(*p)正好判断跳出循环,
p-str:此时的p是字符串"welcome..."的最后一个地址, 而str是第一个地址,相减就是该字符串所用的长度

char *str="welcome to study C program Language! \n";
这句就是将字符串"welcome to study C program Language! \n"的头指针(就是第一个字符的指针值)赋值给指针str
char *p=str;
这句就是将str的指针值再赋值给指针p
while(*p)p++;
因为字符串的最后一个字符肯定是字符"\0",也就是说当指针p指到字符串的最后一个字符时p所指的字符就是"\0"了,就是*p==\0,循环条件等于0了所以这个时候就结束循环了,p++就相当于p=p+1,就是指针p一个字符一个字符地向后移动.
printf("Length of the string is: %d \n",p-str);
两个相同类型的数组里的指针值是可以减的,其值就是它们相差的元素个数.p-str就是这个字符串的长度

while(*p)p++是什么意思?
它是请P指向字符串的末尾
最后输出的p-str是什么意思?
用字符串的末尾-头部就得到了字符串的长度
*p=str是把str的字符串赋值给指针p吗?

while(*p)p++ 表示当指针p不为空值时自动往后移动,当指针p指到“!”时执行while,p++然后p指到空值处,while结束。
p-str表示此处p所指到开始字符长度减去str所指的开端字节,其所的就是该字符串长度。
不是把str的字符串赋值给指针p,而是把开端字节赋值给p。

while(*p)p++ 是如果*p不为空,p++
*p=str是把str的字符串赋值给指针p吗?是说指针p指向了str的字符串
最后输出的p-str是什么意思? 是输出"welcome to study C program Language!"这句话.