『壹』 c语言字符串指针问题

这里"hello"是一个sz字符串,你可以把它看坐是一个字符数组数组里有7个元素'h','e','l','l','o','/','0',p就是指向这个数组首地址的指针,所以p里面存的是这个数组的首地址,使用的时候p依次加1,就可以取得里面所有字符。或者用printf(“%s”,p);直接输出一个sz字符串

『贰』 c语言,关于字符指针

如果想打印出a选项的cde该:
printf("%s",s);

『叁』 c语言 字符指针变量

对于printf这个函数,有着一系列的格式符号 比如你说的%d %s
不同的格式,有着不同的参数类型要版求
比如权%s 要求对应参数必须是char *型的 你例子中的string就是这一类型
所以不会出错
如果换成printf("%s",*string);,*string为char 型,对应的格式是%c
而%d对应的是整型,包括int short char等都可以用这个格式字符,不是int的会被转成int

类似的
%f float
%u unsigned int
对于格式输出,在网上有很多介绍 你也可以自己搜索一下

『肆』 C语言 字符指针

你最开始的说法是正确的。

然后第二段程序里面,STRING1是指向在堆上分配的内存,并且该内存没有初始化,所以你这个strcat(STRING1,"test1")的行为是很危险的,编译器在STRING1中寻找到第一个'\0'的位置,然后将"test1"连接在该位置。这个可能会导致溢出,因为STRING1只有100个字符大小。该操作结果未定义,跟执行时堆的情况有关,而执行时堆的情况是不可预料的。
至于你的疑问,这个地方STRING1指向在堆上分配的内存,堆上的内存是可以给它赋值,而"test1"虽然是常量,但是我们并没有企图修改它,只是读取它,然后将它的值放入STRING1而已。

最后一个问题。C语言中字符串是不能直接用"="赋值的。用strcpy(STRING2,"sdfwe");

『伍』 C语言,字符串指针

m是char *型指针,name[z]是char型字符,二者类型不匹配。strcmp只能比较两个字符串,所以anme[z]也不符合strcmp第二个形参类型的要求。试着改成strcmp(m,name);看看。

『陆』 c语言字符串指针

你的说法有些混乱——C没有字符串变量,自然不可能有字符串的指针;C中只有数组的指针和版数组首指针,一维权数组的首指针是指向第一个元素的指针,类型是元素的类型,操作一维数组的指针就是这个“首指针”;而数组指针是二级指针,与“首指针”有很多不同,最显著的是首指针+1是第二个元素(下标为1)的地址,而数组指针+1就跑到这个一维数组结束后的那个地方了(要跳过这个一维数组的所有元素)。“即指针名是指向第一个字符的地址”这个说法也不对,应该是“指针名(严格应该叫数组名)是指向第一个字符的”,或“指针名的值是第一个字符的地址”。至于为什么“能用char *s=“abc”;strlen(s)测出s的长度”,那是由于strlen这个函数从()中的指针的地址开始一个单元一个单元(因为一个字符是一个8位单元或叫空间)地向后数,一直数到'\0'为止,把不计'\0'这个单元的累加值返回了,所以就得到了“字符串”的长度。这和printf("%s\n",p);能把p为首地址的“字符串”完全输出是一样的道理。

『柒』 c语言指针,字符串

声明中 int *s; 声明 s 是 指针,用于指向整型。
语句中 *s 表示 指针指向的值,s 表示 指针指向的地址。
第4题,专int a=3,b=4,c=5; 条件 c>b>a 分步计算 为 ((c>b)>a)
(c>b) is true, 得 1, (1<a) is false, 得 0, 0 && anything 得 0。
0 ? 2:1 三目运算,false 得 冒号后 的 1。答案 1.

strcpy(s,"hello); s 是指属针,无字符串存放单元,所以错。
str = "hello"+1; 赋值运算不允许,要用函数
*&(str+1) 中 涉及左值,不允许。
s = str+1; 正确,地址运算,让 s 指向 str[1] 的地址。

『捌』 C语言中的指针指向字符串

1 方法二是对的。原因是字符串必须存在字符数组中,方法一只定义一个变量,无法存储字符串。
2 方法3。
char str[10];
char *p=str;
gets(p);

『玖』 C语言字符指针怎么输入谢谢

可以参考下面的代码

#include <stdio.h>

#include <string.h> // 要用尖括号

intmain()

{

char*str;

str = (char*)malloc(sizeof(char) * 20); // 申请20个char长度的空间

scanf("%s", str); //输入

printf("%s ", str); // 输出

free(str); // 释放空间

return0;

}

(9)c语言字符指针扩展阅读:

字符指针注意事项:

在字符指针中p是指针变量指向字符串首元素(前提对p指针没有进行指针操作),p中存放首元素的地址(一旦被初始化就,系统就为我们分配好了地址,而且地址也不能改变,因为字符指针是一个只读变量,不能企图对一个初始化好的指针进行内部修改)

而*p是对指针变量p进行解引用操作,也就是指针所指向的内容,而&p是对指针变量取地址,所以也就肯定不会和p的值相等,因为字符指针系统会为其分配内存,p的值是字符串首元素的地址。

『拾』 C语言字符串指针

#include<stdio.h>
#include<stdlib.h>

int main()
{
char **s;
int i, j;

/*先申请第一维地址的空间*/
s = (char **)malloc(sizeof(char *) * 3);
for(i=0; i<3; i++)
/*为每个头指针申请空间*/
s[i] = (char *)malloc(sizeof(char) * 10);

/*可以使用数组的方式,因为数组名本身就是一个指针*/
for(i=0; i<3; i++)
scanf("%s", s[i]);

for(i=0; i<3; i++)
puts(s[i]);

return 0;
}
希望满意