ポインタと配列
- ポインタ周りで苦戦中。でもたくさん書いていたらだんだんとなじんできた。
#include <stdio.h>
int main(void){
char *str[] = {"aiueo"};
char mystr[] = "ohyeah";
char *mystr2 = "uho";
printf("%s %c%c\n", str[0], str[0][0], str[0][1]);
printf("%s %c%c\n", mystr, *(mystr + 0), *(mystr + 1));
printf("%s %c%c\n", mystr2, *(mystr2 + 0), *(mystr2 + 1));
return 0;
}
ポインタの配列
#include <stdio.h>
int main(void){
char *str[2] = {
"hoge",
"aaaaaaaa"
};
int i;
for(i=0; i<2; i++){
printf("%s %s\n", *(str + i), str[i]);
}
return 0;
}
関数に配列を渡す
#include <stdio.h>
void charcount(char s[]);
int main(void){
char str[] = "aiu eo";
charcount(str);
return 0;
}
void charcount(char str[]){
int count = 0;
int i;
for(i=0; str[i] != NULL; i++){
count++;
}
printf("%d\n", count);
return ;
}
関数にポインタを渡す
#include <stdio.h>
void charcount(char *);
int main(void){
char *str = "aiu eo";
charcount(str);
return 0;
}
void charcount(char *str){
int count = 0;
int i;
for(i=0; *(str + i) != NULL; i++){
count++;
}
printf("%d\n", count);
return ;
}
ポインタとインクリメント
#include <stdio.h>
int main(void){
char *str = "aiueo";
printf("%c\n", *(str++));
printf("%c\n", *(str++));
printf("%c\n", *(str++));
printf("%c\n", *(str++));
printf("%c\n", *(str++));
return 0;
}
ポインタのポインタ
#include <stdio.h>
int main() {
int a = 100;
int *p, *(*q);
p = &a;
q = &p;
printf("%p %p %p %d\n", &a, p, *q, *(*q));
**q = 200;
printf("%d\n", a);
return 0;
}
#include <stdio.h>
int main() {
int a = 100;
int *p, *q;
p = &a;
q = p;
printf("%p %p %p\n", &a, p, q);
*q = 200;
printf("%d %d %d\n", a, *p, *q);
return 0;
}