C语言指针怎样指向一段字符串?

2025-03-05 05:40:49
推荐回答(5个)
回答1:

首先s是指针常量,不能修改s本身所指的内容,printf函数的指针参数会自加,也就是会从指针指向的字母开始,一直打印到最后"\0"为止,而且一般的函数都是自加的,所以如果指向打印前半部分,只能要耗费一点内存,要先把"abc"拷贝到临时数组,然后对临时数组进行操作。
memcpy(p,s,3);
print("%s\n", p);

回答2:

将指针指向该字符串的首地址即可。


比如:

char a[] = "abscdf";
char *p = a;  // 将字符串"abscdf"的首地址(即数组名)赋值给指针p
puts(p);  // 等价于puts(a)


// 也可以参考下面的示例程序
char *p = "abscdf"; // 在定义指针的时候,就使指针p指向该字符串

回答3:

因为p仅仅是一个指针,它只能指向某个已经存在的字符串,它的值只能是某个字符串中特定的字符的地址,它所指的对象只能是某个字符串本身或者从这个字符串中的某个字符开始到该字符串结束所构成的字符串,若想要p指向你所说的那些字符串,则可以单独定义字符数组,将其处理后,再让p指向它.如:
char ch[5]; int i;
for(i=0;i<5;i++)
ch[i]=s[i];
ch[i]='\0';
p=ch;

回答4:

//方法1
char* s = "abcdef"; //"abcdef"叫指针常值,不能修改。
char* p = "abc"; //要达到你所要求的,只能这样了。

//方法2
char* s = "abcdef";
char* p = s;
for(int i=0;i<3;i++)
printf("%c",p[i]);

回答5:

# include
int main()
{
char *p;
int i=0,j=0;
char a[6]="abcde";
printf("please 输入要开始的位置i和长度j\n",i,j);//注意0<=i<=j<=5
scanf("%d%d",&i,&j);
for(p=&a[i];p<=&a[j];p++)
printf("%c",*p);
printf("\n");
return 0;
}
最后说一下注意a[0]=a,a[4]=e.
你运行一下,试试吧!
我运行过了,应该能满足你的要求,把其中的一段字符串搞到p中。