『壹』 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;
}
希望滿意