-
strcpy(dir,"abc");
正確執行此函式的前提是給物件提供目錄指標指向空格的物件,沒有空格如何複製 abc。
char *dir;
請記住,這樣的定義只給 dir 指標留出空間,而不是給 dir 指標指向的物件留出空間,並且需要以 malloc 或新方式應用。 如果你不想經歷麻煩,只需將其定義為 char dir[10],並使用陣列而不是指標,這簡單明瞭。
-
你只是定義了乙個指標,但是沒有變數可以指向,也就是說沒有記憶體空間可以指向,然後你讓strcpy去cpy自然做不到,strcpy的底層實現是while(*obj++=*souece++) pointer是儲存變數位址的變數,你要操作它的第一步就是給它乙個位址。
-
strcpy 是預分配記憶體... 你定義了乙個指標,但不給它分配空間,所以分配乙個值是不行的......
一般來說,我們的方法是 char *dir = new char[strlen(.]"abc") +1];
然後繼續進行 strcppy 操作。
-
strcpy(dir,"abc");呼叫錯誤。
第乙個引數必須是陣列型別,並且比第二個引數長。
-
#include
include 應用在尖括號中。
int main()
char *str;
str = (char*)malloc(sizeof(char) *20);申請 20 個字元長度的空間。
scanf("%s", str);輸入 printf("%s", str);輸出 free(str); 釋放空間。
return 0;
-
示例:包括""
#include""
main()
char*p[10],*temp;
inti,j,k;
for(i=0;i<10;i++)
p[i]=(char*)malloc(sizeof(char)*50);開啟記憶體。
for(i=0;i<10;i++)
printf("輸入 %d 本書的標題",i+1);
gets(p[i]);
for(i=0;i<10;i++)
printf("%s",p[i]);
-
首先,string 是系統中的保留字,不建議使用,更改名稱,比如 str,其次,你只有乙個指標,沒有空格,無法儲存。
#include
include 應用在尖括號中。
int main()
-
關於角色型別笑的指標如下:
1.字元的指標觸及棗字元,指向字串常量的第乙個位址,即字串的第乙個位址。
2. 字元指標也可以指向字串。 我們可以用字串常量初始化字元指標。
3.字元指標的值可以更改。
-
在 C 語言中,char* 表示字元指標型別,當它指向字串的第乙個元素時,它可用於表示字串。
例如 char* str="learn c";中等"learn c"是乙個長度為 8 常量的字元陣列,其最後乙個元素是'\0',這句話的意思是執行的結果是指向 str"learn c"第乙個字元'l',STR後面的連續記憶體依次儲存'e','a','r','n','c','0'
-
在 C 語言中,char* 表示字元指標型別,當它指向字串的第乙個元素時,它可用於表示字串。
例如 char* str="learn c";中等"learn c"是通訊長度為 8 的字元陣列的常量,其最後乙個元素是'\0',這句話的意思是執行的結果是指向 str"learn c"第乙個字元'l',STR後面的連續記憶體依次儲存'e','a','r','n','c','0'
擴大展會資訊
定義 char* 注意事項:
1.當程式宣告乙個變數時,*只表示“它是乙個無符號整數,這個整數指向某個記憶體位址,並且訪問的sizeof(type)長度”不要與(*)運算子混淆。
2.二維陣列的陣列名稱可以分配給指標陣列的陣列名稱,pai=arr(錯誤),因為兩者的型別不一致,二維陣列名稱的型別是指向int[型別的指標,指標陣列的陣列名稱是指向int *[型別的指標。
-
第56集 指標指向乙個字串。
-
題主問了兩個問題:(1)程式**上的問題不對:編譯正確,操作錯誤,因為char *p="breadfruit";p 是指向靜態記憶體區域中麵包果字串的第乙個字元的指標(可讀,不可寫)。
p1+3)='b';嘗試寫入,因此執行錯誤。 更改為 char p="breadfruit";您可以修改字串,因為該字串是您自己定義的區域性變數,您可以根據需要更改它。 主要原因是兩種寫入方法的字串儲存在不同的位置,如果要更改字串,則必須使用第二種寫入方法。
2)為什麼指標輸出用p而不是*p:教材部分字串的輸入和輸出非常清晰。當使用“%s”格式化程式輸出字串時,printf 函式中的輸出項是字元陣列名稱(即字元陣列的起始位址,強調位址)。
現在指標 p 指向字元陣列的第乙個字元,然後做這樣的事情:通過 p 中的位址找到其字元陣列的第乙個字元,然後將其中的字元一一輸出,直到遇到“0”。
-
char *p="breadfruit";這意味著 char* 指標被定義為靜態記憶體區域“breadfruit”的第乙個位址,這是不可寫的!
不知道大家聽懂不懂?
你得到了很好的補充。
char p="breadfruit";
它是定義乙個具有 11 個位元組空間的陣列,可以自由讀取。
-
第56集 指標指向乙個字串。
-
char *s=“abcefg“;所以 s[0]=a s[1]=b s[5]=g,對吧? 沒錯,但是 char **s="abcdef";這是不對的。 你試過嗎?
char **s="abcdef";這個可以通過編譯來寫嗎? 恐怕不是! char **s 是乙個指標,它表示 s 是指向另乙個指向字元變數的指標的指標,應該這樣寫:
char *p=“abcefg“,*s=&p;但是,您可以使用 **s 來檢索指標指向的字串的內容,例如,在上面的定義中,使用 cout
-
1. char *s=“abcefg“;
然後是 s[0]=='a's[1]=='b' s[5]=='g' 對。
2.你不能這樣寫,它會警告,型別不一致,左char **右char *
-
char *s=“abcefg“;
所以 s[0]=a s[1]=b s[5]=g,對吧?
是的,你也可以 *s=a, *s+1=b,如果這是 char **s="abcdef";
那麼 s[0] s[1] 是什麼意思呢?
我不明白這個
-
a。從C,我們可以知道A是錯的。
b。陣列只能在定義陣列的同時使用 {} 進行初始化。
該語言不支援在句子中連續宣告多個變數並用 = 初始化它們的形式。
乙個假的。 帶有隱藏終結符的“ABCDE”需要 char s[6] 才能適應。
C 假。 s 指向常量字串,不能賦值。
D 假。 s 未初始化並指向未知空間。
乙個假的。 s 是陣列,p 是指標,雖然在用法上沒有區別,但它們畢竟是兩種不同的型別。
B 假。 p 中的內容是 s 的第乙個位址,s 中的內容指的是字串 China。
D 假。 s 的長度是通過計算字串終止符來計算的,指向的字串的長度為 5,不包括終止符。
乙個假的。 str 本身就是位址,無需新增 &
B 假。 p 未初始化。
D 假。 p[2] 是 str 中的第二個元素,不是指標型別。
你學過C語言嗎?
首先:和ch有什麼關係,str是乙個指標,ch,是乙個陣列的第乙個位址,雖然這兩個位址可以是同乙個位址,但是它的含義卻大不相同,ch不能用陣列的名稱給它賦值,定義大小後,就想想你給10個孩子糖, 你不能只給第乙個,然後其他孩子會不理你,我不是說你也明白。 >>>More
這個問題本身有問題。
結果沒有初始化,沒有指向任何空格就傳遞給add函式,這本身就是錯誤的,當然也可以實現,在add函式中申請乙個位址來儲存結果,並將位址發回給結果,但是該位址的**是無法控制的, 容易造成記憶體洩漏。 >>>More